検証環境は下記となります。
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 );
コメント