検証環境は下記となります。
WordPress:4.9.1
Contact Form 7:4.9.1
ググっていたところ対応コードを公開されている方がいました。
Contact Form 7で特定の入力項目のエラーメッセージの位置を変更する
ですが、こちらの参考サイトのソースコードを入れてみたのですが、エラー位置が変わることはありませんでした。
調べてみたところ Contact Form のバージョンが上がっていることで、$items の設定情報が変わっていました。
filter直後の $items の情報です。
Array
(
[into] => #wpcf7-f5-p24-o1
[status] => validation_failed
[message] => 入力内容に問題があります。確認して再度お試しください。
[invalidFields] => Array
(
[0] => Array
(
[into] => span.wpcf7-form-control-wrap.fav
[message] => 必須項目に入力してください。
[idref] =>
)
)
)バージョンによってinvalid の名称が異なるために処理がされずにいました。
$items[‘invalids’] → $items[‘invalidFields’] に変更したところ、正常にエラー位置を変えることが出来ました。
<span class="wpcf7-custom-item-error data1 data2"></span>
<?php
function wpcf7_custom_item_error_position( $items, $result ) {
$class = 'wpcf7-custom-item-error';
$names = array( 'data1', 'data2');
if ( isset( $items['invalidFields'] ) ) {
foreach ( $items['invalidFields'] as $k => $v ) {
$orig = $v['into'];
$name = substr( $orig, strrpos($orig, ".") + 1 );
if ( in_array( $name, $names ) ) {
$items['invalidFields'][$k]['into'] = ".{$class}.{$name}";
}
}
}
return $items;
}
add_filter( 'wpcf7_ajax_json_echo', 'wpcf7_custom_item_error_position', 10, 2 );


コメント