Contact Form 7のエラーメッセージの表示位置を変更する

構築・開発WordPress

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

コメント

スポンサーリンク
タイトルとURLをコピーしました