はじめに
WordPressでフォームを作成する際に便利な「MW WP Form」。
柔軟なカスタマイズが魅力のプラグインですが、エラーメッセージの共通化に関しては、公式ドキュメントや他の解説記事でも「これだ!」という方法がなかなか見つかりません。
特に、こんな悩みを持っている方はいないでしょうか?
- フォームが複数あるのに、毎回エラーメッセージを個別に設定するのが面倒
- 全フォームで同じエラーメッセージを使いたい
- 識別子(form key)を意識せず、グローバルに制御したい
私もまさにその一人でした。
しかし、ある方法でこの課題を解決できました。
今回はその具体的な手順を共有します。
一般的な解説記事では解決できなかった
例えば、以下の記事などはMW WP Formのエラーメッセージ変更について詳しく書かれていますが、
「複数フォームをまたいで共通処理する方法」は載っていませんでした。
MW WP Formのエラーメッセージを自由に変更する方法まとめ|recooord.org
フォームごとに識別子(form key)を指定して個別に処理する方法が中心であり、
「すべてのフォームに共通のバリデーションを適用する」方法には触れられていませんでした。
解決方法:識別子なしでグローバルにエラーメッセージを設定
実際に成功した方法は、全フォームに共通で適用されるフィルターを使い、
さらに 各フィールドのエラーメッセージをカスタムフィールドで制御する というアプローチです。
1. 識別子不要でバリデーションルールを追加
以下のように、フィルター名を mwform_validation
にすることで、全フォームに対してバリデーションルールが適用されます。
// 以下のコードを functions.php に追記してください
add_filter('mwform_validation', 'my_validation_rule', 10, 3);
function my_validation_rule($Validation, $data, $Data) {
$fields = array(
'姓',
'名',
'会社名',
'部署名',
'電話番号',
'メールアドレス'
);
foreach ($fields as $field) {
$Validation->set_rule($field, 'noEmpty', array('message' => '必須項目です'));
}
return $Validation;
}
このコードでは、指定したフィールドに対して「未入力チェック(noEmpty)」を設定し、
エラーメッセージを一律で「必須項目です」と表示させています。
2. このコードをどこに書けばいいのか?(functions.php に記述)
上記のコードは、WordPressのテーマファイル functions.php
に記述してください。
記述場所の例:
外観 → テーマファイルエディター → functions.php
注意点:
- 使用中のテーマが更新されると上書きされるため、可能であれば子テーマの functions.php に記述するのがおすすめです。
- 構文エラーがあるとサイトが表示されなくなる可能性があるため、バックアップを取ってから作業してください。
もしテーマに直接書き込むのが不安な場合は、Code Snippets のようなプラグインを使えば、安全にコードを追加できます。
3. フィールドごとにメッセージを出し分けたい場合(応用編)
全てのフォームで同じメッセージを使うだけでなく、
「このフィールドだけは別のエラーメッセージにしたい」といったケースにも対応可能です。
たとえば、Advanced Custom Fields(ACF)などを使って、フィールド名に対応したメッセージを管理画面から設定しておき、そこから取得するという方法です。
// 以下のコードを functions.php に追記してください
add_filter('mwform_validation', 'my_validation_rule', 10, 3);
function my_validation_rule($Validation, $data, $Data) {
$fields = array(
'姓',
'名',
'会社名',
'部署名',
'電話番号',
'メールアドレス'
);
foreach ($fields as $field) {
// オプションページやカスタムフィールドから取得
$message = get_option('mw_error_message_' . $field);
if (!$message) {
$message = '必須項目です'; // デフォルトメッセージ
}
$Validation->set_rule($field, 'noEmpty', array('message' => $message));
}
return $Validation;
}
このようにすると、基本は共通のエラーメッセージを表示しつつ、特定項目だけ個別に上書き表示できるようになります。
おわりに
MW WP Formで複数のフォームに共通のエラーメッセージを設定する方法は、検索してもなかなか出てきません。
しかし、今回紹介したように 識別子に依存せず、バリデーションを一括制御する方法を使えば、
大規模なフォーム運用にも柔軟に対応できます。
同じような課題に悩んでいた方の助けになれば幸いです。
注意点:MW WP Formはすでに開発終了しています
MW WP Formは多機能で自由度の高いプラグインですが、現在は公式の開発・サポートが終了しています。
そのため、今回ご紹介したようなカスタマイズを行う場合は、以下の点にご注意ください:
- WordPress本体のバージョンアップによって正常に動作しなくなる可能性があります
- 他のプラグインやテーマとの競合が起こることもあります
- 実装は必ず自己責任で行い、バックアップを取ってから作業してください
将来的には、Contact Form 7 や WPForms、Fluent Formsなど、開発が継続されているフォームプラグインへの移行も検討すると安心です。