目次
        
      ここのURLをクリップボードにコピー(copied!)
        今まででは適切に表示されていたContactForm7のエラー文言の表示位置が突然崩れてしまった。。。
その原因と、対処法をご紹介します。
先に結論!
- ContactForm7のバージョンアップ(5.3以降)で、エラー時のアイテム配列キー「invalidFields」が「invalid_fields」に変更された
 - functions.phpに記述している「invalidFields」を「invalid_fields」に変更することで解決!
 
(そもそも)エラー文言の表示位置の変更の方法
ContactForm7では、プラグインをインストールした直後の状態では、フォーム送信エラー時に表示されるエラー文言は、各フォームの下に自動的に表示されるようになっています。
それでは「レイアウト的に見づらい」「デザインをカスタマイズしたい」という状況が起きてきます。
そこで、エラー文言を自分の意図した場所に表示させたいという方法がこちら。
ContactForm7のプラグインのバージョンによって、記述方法が若干異なります!(16行目と17行目)
テーマファイル内「functions.php」に以下のPHPコードを追加します。
ContactForm7のバージョンが「5.3以上」の場合
function wpcf7_custom_item_error_position( $items, $result ) {
  // メッセージを表示させたい場所のタグのエラー用のクラス名
 $class = 'wpcf7-custom-item-error';
 // メッセージの位置を変更したい項目名(※適宜ご自身の設定したものに変更してください)
 $names = array(
  "your-name",
  "your-companyname",
  "your-email",
  "your-body",
  "your-tel",
  "your-fax",
  "your-zip",
  "your-address",
 );
 // 入力エラーがある場合
 if ( isset( $items['invalid_fields'] ) ) {
  foreach ( $items['invalid_fields'] 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 );
ContactForm7のバージョンが「5.3未満」の場合
function wpcf7_custom_item_error_position( $items, $result ) {
  // メッセージを表示させたい場所のタグのエラー用のクラス名
 $class = 'wpcf7-custom-item-error';
 // メッセージの位置を変更したい項目名(※適宜ご自身の設定したものに変更してください)
 $names = array(
  "your-name",
  "your-companyname",
  "your-email",
  "your-body",
  "your-tel",
  "your-fax",
  "your-zip",
  "your-address",
 );
 // 入力エラーがある場合
 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 );
配列の関数「$names」には、ご自身で設定した「項目名」を追加/変更してください。
※「項目名」は下図の赤枠部分にあたります
さらに、ContactForm7のHTMLタグ内に、「wpcf7-custom-item-error」と「項目名」をクラスに持つHTML要素を追加します。
※下図の赤枠部分
この2つの対応で、エラー文言を自由な箇所に追加することが可能になります。
    
