MW WP Formのセレクトボックス・チェックボックス・ラジオボタンを動的に設定する方法

2022年5月16日2022年5月17日

さて今回は、ワードプレスのメールフォームプラグインMW WP Formについて。

セレクトボックスチェックボックスラジオボタンといった選択系の項目を、管理画面から手動で設定するのではなく、動的な感じに設定してみたいと思います。

ちょっと伝わりずらいかもしれません。今回やってみる事は以下のような感じです。

「お問い合わせの製品」というセレクトボックスを作ったが、このセレクトボックスの選択項目にカスタム投稿タイプ「製品」の一覧を入れたい。

といった感じです。

このようにしておくと、フォームの内容がカスタム投稿タイプ「製品」に連動しますから、製品の追加や削除の際に、いちいちフォームを修正する必要がなくなりますね。

というわけで、さっそくやってみましょう。

使用するフック

個人的な考えですが、MW WP Formは便利なフックがたくさん用意されていて、結構高度なカスタマイズもしやすいと思います。今回、使用するフックは ”mwform_choices_mw-wp-form-xxx”というフィルターフック。

このフックで、選択肢を好きなように書き換えられます。

選択肢を書き換えるサンプルコード

以下の例は「products」というカスタム投稿タイプの記事(ページ)のタイトルをすべて取得して、選択肢にする例です。使用中のテーマのfunctions.phpなどに追記します。

公式マニュアルのコードとほとんど一緒ですが、丸写しじゃ記事としてアレなんで。。少しわかりやすく書いておきます。

 

上のサンプルコードを実際に使用する際は、下の3点を実際の環境に合わせて書き換えてください。

書き換えるフォームパーツの指定

まず2行目の「$atts[‘name’] == ‘products’」の「products」が、書き換えるフォームパーツを判定する部分です。このコードでは、name属性で判定していますので、フォーム作成画面で設定したname属性の値に書き換えてください。

取得する投稿タイプの指定

このサンプルコードでは「products」というカスタム投稿タイプの記事のタイトルをすべて取得しています。

5行目の「’post_type’ => ‘products’」の部分で投稿タイプ名を指定しています。ここは実際の投稿タイプ名に書き換えてください。

フォーム識別子の指定

最終行の「mwform_choices_mw-wp-form-49」の後半のmw-wp-form-xxxという部分が、フォーム識別子です。最後の「49」は、実際の数字に書き換えてください。

この値はフォーム作成画面などでも確認できますが、フォーム表示用のショートコードの「key」の値です。

引数のattsの中身

一応、補足しておきますが、このフックの第2パラメータの ”atts” の中身について。

こちらは、MW WP Formのフォーム作成画面で各フォームパーツに設定した内容が格納されているようです。

下はラジオボタンのものですが、ダンプしたものです。nameにフォームパーツのname属性が格納されているので、これを利用してカスタマイズするパーツを判定してやります。

最後に

今回はラジオボタンなどの選択系項目の書き換えをしてみました。

サンプルコードでは、カスタム投稿タイプの一覧を選択肢に…という例でしたが、他にも色々な書き換えが自由にできます。仕組みが理解できたらトライしてみてください。

テキスト項目の書き換えなどは、次回まとめてみたいと思います。

One Reply to “MW WP Formのセレクトボックス・チェックボックス・ラジオボタンを動的に設定する方法”

Comments are closed for this post.

関連のある記事

MW WP Formで郵便番号から住所を自動入力させる方法

MW WP Formで郵便番号から住所を自動入力させる方法

記事を読む

MW WP Formで動的にフォームのデフォルト値を設定する方法

MW WP Formで動的にフォームのデフォルト値を設定する方法

記事を読む

Generic selectors
Exact matches only
Search in title
Search in content
Post Type Selectors

目次へ