Contact Form 7で「未定義の値」エラー?原因は“見えない空白”でした
Contact Form 7でセレクトボックスの値を動的に生成している場合、「未定義の値がこの項目を通じて送信されました。」というエラーが発生することがあります。特に原因が分かりにくいケースでは、データの中に含まれる“見えない文字”が影響していることも少なくありません。
今回のケースでは、特定の日付だけエラーが発生していましたが、その原因は投稿タイトルの末尾に含まれていた「全角スペース」でした。見た目では気づきにくいポイントですが、フォームの厳密な一致判定によりエラーとなっていました。
今回のご相談内容
Contact Form 7のセレクトボックスに、カスタム投稿のタイトルを自動で表示する仕組みを構築されていました。
基本的には問題なく動作しているものの、「特定の1日程だけ」送信時にエラーが出るとのことでご相談をいただきました。
発生していた症状・エラー内容
フォーム送信時に、以下のエラーが表示されていました。
「未定義の値がこの項目を通じて送信されました。」
他の日程では正常に送信できるにもかかわらず、特定の1件のみエラーが発生している状態でした。
原因の特定ポイント
調査のポイントとなったのは以下の点です。
- 該当日程だけエラーが出る
- セレクトボックス自体は正しく表示されている
- URLパラメータにその日付が含まれている
最終的に確認したところ、該当する投稿タイトルの末尾に「全角スペース」が含まれていることが判明しました。
Contact Form 7は、送信された値と定義された選択肢が「完全一致」しているかを厳密にチェックします。
そのため、見た目では同じに見えても、末尾の空白1文字の違いでエラーとなってしまいます。
実際に行った対応内容
以下の対応を行いました。
- 該当投稿のタイトルを修正(末尾の全角スペースを削除)
- 今後の再発防止として、コード側でタイトル前後の空白を除去する処理を追加
$title = preg_replace('/^[\s\x{3000}]+|[\s\x{3000}]+$/u', '', $job_post->post_title);
これにより、半角・全角スペースの両方を自動的に除去できるようにしています。
対応後の結果・改善点
修正後は、問題なくフォーム送信ができるようになりました。
特定の1件だけ発生していたエラーも解消され、全ての選択肢で正常に動作しています。
今回の対応から分かったこと
今回のポイントは、「見えない文字が不具合の原因になる」という点でした。
特に以下のようなケースでは注意が必要です。
- コピペでタイトルを入力している場合
- 全角スペースが混入している場合
- システム側で厳密な一致判定をしている場合
一見問題なさそうに見えても、内部的には異なる文字列として扱われてしまうことがあります。
同様のトラブルを防ぐために
再発防止として、以下の対策がおすすめです。
- 入力値・出力値の両方で「trim処理」を行う
- 全角スペースも含めて除去する正規化処理を入れる
- セレクトボックスのvalueにIDなど固定値を使う設計にする
特に、表示用テキストと送信値を分ける設計にすると、こうした問題は起きにくくなります。
メディアプライムスタイルのサポートについて
メディアプライムスタイルでは、今回のような「一見すると原因が分かりにくい不具合」の調査・対応もサポートしています。
フォームやWordPressのカスタマイズは、小さな違いが大きなトラブルにつながることもあります。動きがおかしい、原因が分からないといった場合でも、お気軽にご相談ください。
状況を丁寧に確認しながら、安心して運用できる状態までサポートいたします。
🐾 さぽたん日記からのご案内
ホームページを育てるお手伝い
ホームページは作って終わりではなく、
小さな修正や改善を重ねながら育てていくものです。
日々の対応内容を「さぽたん日記」でご紹介しています。