以前にも紹介した、WordPressでお問い合わせフォームやお申し込みフォームなどを簡単に作成・設置できるプラグイン「MW WP Form」で、選択項目(ラジオボタン、チェックボックス、セレクトボックス)をフックでいろいろ変更する例を紹介します。
カスタム投稿の記事タイトルを選択項目にする
公式マニュアルにも載っている方法です。今回は少し足して選択項目の最後に「その他」を追加します。
MW WP Form側での設定
MW WP Formの画面から選択項目のフォームタグを選びます。なんでも構いませんが、サンプルではチェックボックスを選んでいます。
お問い合わせ商品選択:[mwform_checkbox name="商品" separator=","]
functions.php
functions.phpの記述例です。XXXの部分はフォーム識別子になります。
// MW WP Formのチェックボックスにカスタム投稿のタイトルを入れる
function form_products_list( $children, $atts ) {
/* 値を入れるチェックボックスのname属性を指定(サンプルでは「商品」) */
if ( $atts['name'] == '商品' ) {
/* get_posts()関数で値にするカスタム投稿の配列を取得 */
$products = get_posts( array(
'post_type' => 'product',
'posts_per_page' => -1,
) );
/* 取得した配列からタイトルだけを抽出 */
foreach ( $products as $product ) {
$children[$product->post_title] = $product->post_title;
}
/* 最後に「その他」を追加したい場合(送信値 => 表示値) */
$children += array( 'その他' => 'その他' );
}
return $children;
}
add_filter( 'mwform_choices_mw-wp-form-XXX', 'form_products_list', 10, 2 );
これで商品が新しく追加された際や、更新・削除されても自動で選択項目が変更されます。便利!
カスタムタクソノミーを選択項目にする
今度はカスタム投稿ではなく、カテゴリー(カスタムタクソノミー)を選択項目にします。こちらは選択項目の最初に「すべてのカテゴリー」を追加しています。
MW WP Form側での設定
MW WP Formの画面から選択項目のフォームタグを選びます。サンプルではセレクトボックスを選んでいます。
お問い合わせ商品カテゴリー選択:[mwform_select name="商品カテゴリー"]
functions.php
functions.phpの記述例です。XXXの部分はフォーム識別子になります。
// MW WP Formのセレクトボックスにカスタムタクソノミーを入れる
function form_product_cat_list( $children, $atts ) {
/* 値を入れるチェックボックスのname属性を指定(サンプルでは「商品カテゴリー」) */
if ( $atts['name'] == '商品カテゴリー' ) {
/* 商品カテゴリーを取得 */
$categoryList = get_terms( 'product_cat', 'hide_empty=0' );
/* 取得した配列からターム名だけを抽出 */
foreach ( $categoryList as $category ) {
$children[$category->name] = $category->name;
}
/* 値の最初に「すべてのカテゴリー」を追加したい場合(送信値 => 表示値) */
$children = array( 'すべてのカテゴリー' => 'すべてのカテゴリー' ) + $children;
}
return $children;
}
add_filter( 'mwform_choices_mw-wp-form-XXX', 'form_product_cat_list', 10, 2 );