MW WP Formで動的にフォームのデフォルト値を設定する方法
今回は、前回に引き続きMW WP Formのカスタマイズについてです。
デフォルト値はフォーム作成画面で簡単に指定できますが、なんらかの理由で動的に書き換えたい場合がありますよね。
という事で今回は、MW WP Formのデフォルト値をコード上から動的に設定する方法です。
~ 目次 ~
使用するフック
MW WP Formには、デフォルト値の書き換えのためのフックも用意されています。
今回、使用するのは ”mwform_value_mw-wp-form-xxx”というフックです。
他のフィルターフックでもそうですが、後半のmw-wp-form-xxxという部分は、フォームの識別子です。最後のxxxを、実際の数値に書き換えて使用します。この数値はフォームのショートコード内の「key」の値です。フォーム作成画面などで確認してください。
サンプルコード
では実際のサンプルコードです。デフォルト値は以下のような感じで設定する事ができます。
記述する場所は、使用中のテーマのfunctions.phpで良いと思います。
1 2 3 4 5 6 7 |
function custom_default_value( $value, $name ) { if ( $name == 'products' ) { $value = '製品1'; } return $value; } add_filter( 'mwform_value_mw-wp-form-49', 'custom_default_value', 10, 2 ); |
ちょこっと解説
このフックの2番目のパラメータの$nameは、フォームパーツのname属性です。2行目のif文で「products」だった場合だけデフォルト値を設定するようにしています。
上のような感じではただ「製品1」に設定しているだけなので意味がありませんが、if文の中でデフォルト値にしたい情報を取得して設定してください。
ちなみにデフォルト値はカンマ区切りで複数設定する事ができます。
前節でも書きましたが、最終行の「mwform_value_mw-wp-form-49」という部分は最後の「49」を実際のフォームの識別子に合わせて書き換えてください。
フォーム作成画面でデフォルト値を登録してはダメ!
このフックはフォーム作成画面でデフォルト値が設定されていると、書き換えてくれません。設定しないように気を付けましょう。
最後に
今回はMW WP Formのフォームパーツにコード上からデフォルト値を設定してみました。URL引数と合わせて遷移元のページによってデフォルト値を変えたり、フォームの設置ページによってデフォルト値を変えるといった事も自由にできます。
また前回の記事「MW WP Formのセレクトボックス・チェックボックス・ラジオボタンを動的に設定する方法」のようなケースでも、動的に設定したラジオボタンのデフォルトを設定する…などという事が可能です。
参考サイト
この記事の内容は以下の公式マニュアルを参考にさせて頂いています。気になる方はチェックしてみてください。
mwform_value_mw-wp-form-xxx | MW WP Form