【WordPress開発メモ】Google検索しても出てこなかった、MW WP Form 複数フォームのエラー共通化方法

目次

はじめに

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など、開発が継続されているフォームプラグインへの移行も検討すると安心です。


関連リンク

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

Web制作会社勤務、業界歴10年以上。現場を走り回ってきた制作者。
これからWeb制作を学ぶ人に寄り添いながら、実務で役立つ知識をわかりやすくシェアします。
「ゼロぐらいから学べる!」をモットーに、あなたの“がんばろ”を応援します!

目次