質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

90.36%

  • WordPress

    8242questions

    WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

【WPプラグイン: MW WP Form】でエラーメッセージの英語化をしたい

解決済

回答 1

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 2,746

t-book

score 28

いつも大変お世話になっています。

現在Wordpressのプラグイン MW WP Formで日本語・英語のお問い合わせページを作成しています。
その際、バリデーション時のエラーメッセージの変更について困ってしまったので、ご相談させていただきたく投稿しました。


■やりたいこと
表題の通りですが、英語フォームの時はエラーメッセージを英語に変えたいです


■構成
以下の様な固定ページを作成
 ・日本語入力、日本語確認、日本語完了、英語入力、英語確認、英語完了
 ・日本語と英語用の2種類のフォームを作成し、各固定ページの本文にフォーム識別子を記述
 ・テンプレートは、page-contact-ja, page-contact-enの2種類を用意


■前提条件
エラーメッセージをカスタマイズできるフックは用意されているのですが↓、
// http://plugins.2inc.org/mw-wp-form/filter-hook/mwform_error_message/
function my_error_message( $error, $key, $rule ) {
    if ( $key === 'お名前' && $rule === 'noempty' ) {
        return 'お名前が入力されておらぬぞ';
    }
    return $error;
}
add_filter( 'mwform_error_message_mw-wp-form-xxx', 'my_error_message', 10, 3 );
本番サーバー、テストサーバー、開発サーバー、それぞれfunctions.phpファイルなどの同期が取られているため、識別子(上記コードでのxxxにあたる箇所)での指定ができずにこの手法が使えません...


■以下の様なことを考えてみましたが、やり方が分かりません。。(そもそも可能かどうかも)
1.特定の固定ページ(page-contact-enテンプレ)のみ、別に準備したPOファイルを読み込ませる
2.識別子を使わずに、メッセージをカスタマイズ
3.そもそものフォーム識別子に定数を使用する


もしくは他に何か良い考えがあればご教授いただけると大変助かります。。
よろしくお願いいたします。
  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 1

check解決した方法

0

何とか実現させることができたので自己解決とします。
※ただしあまりスマートではない気もするので、もっと良い考えがあればぜひコメントいただけますと嬉しいです


■対策
・新たにショートコード関数をfunctionsに作成
・該当の固定ページ(フォーム識別子を貼り付けている)に、作成したショートコードを追加
・新規ショートコードにはフォーム識別子のkeyを渡す
・渡されたkeyをエラーメッセージのフィルター名として使用する

function custom_contact_error_msg_en($arg) {
    extract(
        shortcode_atts(
            array(
                'num' => 'xxx'
            ),
            $arg
        )
    );
    /* エラーメッセージのバリデーション */
    function my_error_message( $error, $key, $rule ) {
        /* 未入力 */
        if ($rule === 'noempty') {
            return 'Please enter.';
        }
        return $error;
    }
    // 渡された識別子keyをフィルター名として実行
    add_filter( 'mwform_error_message_mw-wp-form-' . $num, 'my_error_message', 10, 3 );

}
add_shortcode('custom_mwform_error_msg', 'custom_contact_error_msg_en');

↓を記事の本文に追加
[custom_mwform_error_msg num="XXX"]

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

同じタグがついた質問を見る

  • WordPress

    8242questions

    WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。