Secura Vita

Category: Works , WordPress , Plugins
Works

MW WP Form:セレクトに「選択してください」を追加する。確認画面や送信メールの調整も。

Tag:

MW WP Form:セレクトに「選択してください」を追加する。確認画面や送信メールの調整も。

MW WP Formでセレクトボックスを作成した際は登録した項目が値として認識され、「選択してください」という項目を作っても「選択してください」という値を選択したということになります。

それを、表示を「選択してください」・値を「なし」にしたいと思います。

その上で、必須項目について・確認画面・返信メールを確認していきます。

まずは普通に作ってみる

まずは普通に「選択してください」という項目を作り、その挙動を確認。

MW WP Formに選択してください
[mwform_select name="select" children="選択してください,yahoo,google,bing,その他"]

入力画面

MW WP Formに選択してください

確認画面

MW WP Formに選択してください

返信メール

お問い合わせありがとうございました。

よく使う検索サイト:選択してください

確認画面にも返信メールにも「選択してください」と表示されてしまいます。

それと、この状態ではこの項目を必須項目にしても「選択してください」は未選択という扱いにはならないのでそのまま確認画面に進んでしまいます。

送信値と表示値を分離させる

このフォームは表示値と送信値を「:」で分割させることができます。

そして選択肢を「:」で送信値と表示値に分割したとき、送信値をメールで送信にチェックを入れることで返信メールの内容を送信値にすることができます。

MW WP Formに選択してください
[mwform_select name="select" children=":選択してください,yahoo,google,bing,その他" post_raw="true"]

全ての項目で送信値と表示値を設定しないといけないわけではなく、必要なものだけでOKです。
なのでここでは:選択してくださいだけになり、選択してくださいの送信値は空になります。

確認画面

MW WP Formに選択してください

返信メール

お問い合わせありがとうございました。

よく使う検索サイト:

確認画面には「選択してください」と表示されてますが、返信メールは空欄になっています。。

この設定で必須項目にした場合は「選択してください」は送信値が空なためちゃんと未入力が返ってきます。

MW WP Formに選択してください

確認画面の調整

上記設定のまま確認画面も空欄にしたいと思います。

MW WP Formのフックを探したところ、mwform_post_content_raw_mw-wp-form-xxxというものがあったのでこれを使うことにします。

このフックはフォームの内容を表示する前に通ります。

function my_mwform_confirm_select( $content, $data ) {
	if( $data->get_view_flg() == 'confirm' ) {
		$content = str_replace( '選択してください', '', $content );
	}
	return $content;
}
add_filter( 'mwform_post_content_raw_mw-wp-form-100', 'my_mwform_confirm_select', 10, 2 );

mwform_post_content_raw_mw-wp-form-xxxのxxx部分はそのフォームのIDが入ります。

引数の$contentにはフォームの内容が、$dataにはその他いろんなデータが入ってます。

$data->get_view_flg() == ‘confirm’で確認画面かどうかを判別しています。

確認画面なら文字列の選択してくださいを空欄に書き換えます。

MW WP Formに選択してください

また、空欄部分を任意の文字列に変換もできますので確認画面にその文字列を出力できます。

$content = str_replace( '選択してください', '未選択', $content );
MW WP Formに選択してください

おもしろかった・役に立った
▼ブログランキング参加中!クリック!▼
  • ブログランキング・にほんブログ村へ

Leave a comment

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

ソースコードを記入する場合は [code]~[/code] でくくってください。
[code]
echo "Hello World";
[/code]

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください