ワードプレスのプラグイン、カスタマイズの制作過程とソースを公開。PHP,CSS,HTML,Javascript を無料で覚える。数十年の実務経験のプログラマのサイト。

MW WP FORM のカレンダーを英語版にしたい。

MW WP FORM のカレンダーを英語版にしたい。でもワードプレスは、日本語でインストールしている。

日本語ワードプレスで英語ページを作ってしまった。。。ありがち、ありがちwww

困るのは、カレンダー関係ですが、単にカレンダーを出すプラグインなら、探せば日本語英語を切り替えて使えるプラグインが結構出ています。

たとえば、Booking Clender とか。

simple Booking Clender は、有料版で・・・できるのかもしれないけど基本、日本語カレンダー。


MW WP FORM のカレンダーを英語版にしたい

ところが、日本語ワードプレスでMW WP FORM の日付ピッカーを使うとどうしても日本語。

特に設定できるわけでもありません。

MW WP FORM のソースを読んでみると(mw-wp-form/classes/fprm-field/class.datepicker.php)、get_locale を調べて jp かどうかでカレンダーを日本語化しています。

MW-WP-FORM のデイトピッカーは、ワードプレスのデートピッカーを使っていますので、パラメーターはWPのデイトピッカーです。

ここで(protected function input_page)、dayNamesなどのパラメータを日本語にしています。

フックしてプラグインをかぶせるよりも、ここを直接外してしまった方が楽です。

でも、当然のことながら MW WP FORM を更新したときに消えてしまいますので、フックするとかすればいいんだと思いますが、1ユーザーだけの話だったので私は直接コメントアウトしました。

直す場所はここになります。

mw-wp-form/classes/fprm-field/class.datepicker.php 内の protected function input_page の以下の部分です。


$translate_datepicker = apply_filters( ‘mwform_translate_datepicker_’ . $this->form_key, true );
if ( $translate_datepicker && get_locale() == ‘ja’ ) { ←ここで ja 分岐させている $js = array_merge( array(
‘yearSuffix’ => ‘年’,
‘dateFormat’ => ‘yy年mm月dd日’,
‘dayNames’ => array( ‘日曜日’, ‘月曜日’, ‘火曜日’, ‘水曜日’, ‘木曜日’, ‘金曜日’, ‘土曜日’ ),
‘dayNamesMin’ => array( ‘日’, ‘月’, ‘火’, ‘水’, ‘木’, ‘金’, ‘土’ ),
‘dayNamesShort’ => array( ‘日曜’, ‘月曜’, ‘火曜’, ‘水曜’, ‘木曜’, ‘金曜’, ‘土曜’ ),
‘monthNames’ => array( ‘1月’, ‘2月’, ‘3月’, ‘4月’, ‘5月’, ‘6月’, ‘7月’, ‘8月’, ‘9月’, ’10月’, ’11月’, ’12月’ ),
‘monthNamesShort’ => array( ‘1月’, ‘2月’, ‘3月’, ‘4月’, ‘5月’, ‘6月’, ‘7月’, ‘8月’, ‘9月’, ’10月’, ’11月’, ’12月’ ),
), $js );
}


この部分をコメントアウトするか、何かしらの方法で日本語化パラメータを経由させないようにします。

パラメータが設定されていなければ、デイトピッカーはデフォルトの英語になります。



MW WP FORM のフックを使ってデイトピッカーを英語版にする方法

MW WP FORM のフック関数に mwform_translate_datepicker_mw-wp-form-xxx があります。

このフック関数は、datepicker を素の状態の datepicker で使用することができるようになります。

datepicker 項目は、日本語環境の場合自動的に日本語設定で表示されるようになっていますが、このフックを使うことで素の状態の datepicker を使用することができるようになります。datepicker ショートコードの js 属性を使い、自分で設定をカスタマイズしたい場合に便利です。

これを使えば、MW WP FORM のソースを直接いじることなく MW WP FORM を更新しても大丈夫です。


mwform_translate_datepicker_mw-wp-form-xxx を使って日本語カレンダーを英語版で使う


方法は、オフィシャルにも出ていますけど、こんな感じです。

/**
* @param int $translate 日本語設定を手清洲売るかどうか ←誤字www */
function my_mwform_translate_datepicker( $translate ) {
//return $translate;
return false;
}
add_filter( ‘mwform_translate_datepicker_mw-wp-form-xxx’, ‘my_mwform_translate_datepicker’ );

これを function.php に張り付ければOKです。

ちなみに add_filter の ‘mwform_translate_datepicker_mw-wp-form-xxx’ の xxx の部分は、MW WP FORM の フォーム識別子です。


上の図でいえば、211がフォーム識別子のフォームキーになります。

つまり、こんな感じ書けばいいということになります。

/**
* @param int $translate 日本語設定を手清洲売るかどうか ←誤字www */
function my_mwform_translate_datepicker( $translate ) {
//return $translate; ←コメントアウト return false; ←デフォルト(英語版)で使いたいので false(偽)を返す }
add_filter( ‘mwform_translate_datepicker_mw-wp-form-211‘, ‘my_mwform_translate_datepicker’ );


あなたの一助になれば幸いです。

スポンサードリンク

関連記事

関連サイト