LoginSignup
1
1

Contact Form 7 エラーメッセージの変更

Posted at

はじめに

WordPressのお問い合わせフォームでよく使用されるプラグインのContact Form 7。

入力必須の項目に何も記入しなかった場合、エラーメッセージが表示される仕様になっています。

今回、そのエラーメッセージをデフォルトではなく、個別に指定したエラーメッセージを表示するようにカスタマイズしたので、その実装の過程で試したことや最終的にどういう風に実装したのか、記録として残そうと思います。

実装したいこと

デフォルトのエラーメッセージ

まず、Contact Form 7を適用した状態で、入力必須項目に何も記入しなかった場合の通常のエラーメッセージは下記の画像のように「入力してください。」が表示されます。
こちらのエラーメッセージを「お名前」、「メールアドレス」、「ご相談内容」の項目毎に文章を変更しようと思います。

デフォルト.png

試したこと

1.WordPressの管理画面上で設定

最初に目的の実装をするために試したこととして、WordPressの管理画面において、Contact Form 7の設定を変更できる箇所からエラーメッセージを変更しました。(赤枠のメッセージを変更しました。)

設定画面 2.png

結果:全ての項目が「お名前を入力してください。」に変更された。
こちらの方法でも、「入力してください」というエラーメッセージの変更自体は、可能でしたが、全ての項目が変わってしまうため、それぞれの項目のエラーメッセージを個別に変更することはできませんでした。
設定後の画面 2.png

参考サイト

2.functions.phpで設定

WordPressのfunctions.phpファイルに下記のコードを追加することで、エラーメッセージをカスタマイズする方法を試してみました。

functions.php
function custom_wpcf7_validation_error_message($result, $tag)
{
    // 
    if ('your_name' == $tag->name) {
        if (empty($_POST[$tag->name])) {
            $result->invalidate($tag, 'お名前を入力してください。');
        }
    }
        return $result;
}
add_filter('wpcf7_validate_text', 'custom_wpcf7_validation_error_message', 10, 2);

  
下記の画像のWordPressの管理画面側のコンタクトフォームで記載した「your_name」と一致した場合、「お名前を入力してください」というエラーメッセージを表示するコードになります。

994df5940d7c3387471b35a3ad2ba1a8.png

結果:デフォルトの「入力してください。」が表示された。
f32ac09b43ed08b1746a5075e86caa63.png
  
参考サイト

3.必須項目の設定を無効化

色々な方法を試しましたが、デフォルトのエラーメッセージしか表示されませんでした。
そこで、WordPressの管理画面側のコンタクトフォーム上の必須項目の設定を無効化した状態で、上記で試したfunctions.phpのコードを追加して検証しました。
  
下記の「*」を削除することで必須項目を無効化できる
9479ea3c520f55a04da20b924af896f2.png

下記のコードをfunctions.phpに追加する。

functions.php
function custom_wpcf7_validation_error_message($result, $tag)
{
    // 
    if ('your_name' == $tag->name) {
        if (empty($_POST[$tag->name])) {
            $result->invalidate($tag, 'お名前を入力してください。');
        }
    }
        return $result;
}
add_filter('wpcf7_validate_text', 'custom_wpcf7_validation_error_message', 10, 2);

結果:エラーメッセージが「お名前を入力してください。」に変更された。
0565588dcad532f1b712f4f69907c741.png
  
「メールアドレス」、「ご相談内容」の項目も同様にfunctions.phpに追加しました。

functions.php
function custom_wpcf7_validation_error_email($result, $tag)
{
    if ('your_email' == $tag->name) {
        if (empty($_POST[$tag->name])) {
            $result->invalidate($tag, 'メールアドレスを入力してください。');
        }
    }
        return $result;
}
add_filter('wpcf7_validate_email', 'custom_wpcf7_validation_error_email', 10, 2);

function custom_wpcf7_validation_error_textarea($result, $tag)
{
    if ('content' == $tag->name) {
        if (empty($_POST[$tag->name])) {
            $result->invalidate($tag, 'ご相談内容を入力してください。');
        }
    }
        return $result;
}
add_filter('wpcf7_validate_textarea', 'custom_wpcf7_validation_error_textarea', 10, 2);

WordPressの管理画面側のコンタクトフォーム
(赤枠の変数が一致した場合、それぞれのエラーメッセージを表示する。)
0f3086137994b158e89f62a78f5f92e9.png

実際の表示画面
51b41987ef7ac7e8d5e0602e0e83744c.png
c1c9af911fb0f6901fe65164971d2935.png

まとめ

・WordPressの管理画面側のコンタクトフォームで必須項目に設定した場合、無条件でデフォルトのエラーメッセージ「入力してください。」が表示される。
・必須項目の設定を無効化した状態でfunctions.phpにコードを追加することでエラーメッセージをカスタマイズができる。

  
追加するコード

functions.php
function custom_wpcf7_validation_error_message($result, $tag)
{
    if ('your_name' == $tag->name) {
        if (empty($_POST[$tag->name])) {
            $result->invalidate($tag, 'お名前を入力してください。');
        }
    }
        return $result;
}
add_filter('wpcf7_validate_text', 'custom_wpcf7_validation_error_message', 10, 2);

function custom_wpcf7_validation_error_email($result, $tag)
{
    if ('your_email' == $tag->name) {
        if (empty($_POST[$tag->name])) {
            $result->invalidate($tag, 'メールアドレスを入力してください。');
        }
    }
        return $result;
}
add_filter('wpcf7_validate_email', 'custom_wpcf7_validation_error_email', 10, 2);

function custom_wpcf7_validation_error_textarea($result, $tag)
{
    if ('content' == $tag->name) {
        if (empty($_POST[$tag->name])) {
            $result->invalidate($tag, 'ご相談内容を入力してください。');
        }
    }
        return $result;
}
add_filter('wpcf7_validate_textarea', 'custom_wpcf7_validation_error_textarea', 10, 2);

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1