MW WP Formセレクトボックスに特定カテゴリーの記事タイトルを自動で表示させたい!

2021-10-25

フォームセレクトボックスの選択肢をカテゴリーと連動

フォームの質問事項が頻繁に変わるとき、例えば商品が変わる度、注文フォームをいちいち修正するのは慣れていないと大変です。
新しい記事をアップしたら自動でフォームのセレクトボックスに記事タイトルを追加させたい…。そこで、MW WP Formで特定カテゴリーの記事タイトルをフォームセレクトボックスの選択肢にできないか、調べてみました!

MW WP Form フィルターフック

MW WP Formのセレクトボックスだけではなく、ラジオボタン、チェックボックスの選択肢をカテゴリーと連動させることのできるフックについて解説してくださっているMW WP Formマニュアルのページがありました。
こちらを参考に実装させていただきます。

MW WP Formの編集

まずはフォームを作ります。
12行目のセレクトボックスの選択肢に「qualification」というスラッグのカテゴリーの投稿記事タイトルが出力される予定です。

<table>
<tr>
<th>お名前</th>
<td>[mwform_text name="your-name" class=""]</td>
</tr>
<tr>
<th>メールアドレス</th>
<td>[mwform_email name="email" placeholder="半角英数字で入力してください"]</td>
</tr>
<tr>
<th>ご希望の講座</th>
<td>[mwform_select name="course" children=":選択してください" post_raw="true"]</td>
</tr>
</table>
<div class="contact_btn">
[mwform_submitButton name="submit" confirm_value="確認する" submit_value="送信する"][mwform_bback class="modoru" value="back"]戻る[/mwform_bback]
</div>

 

function.phpに追加

function.phpに下記コードを入れます。

//MW WP Formセレクトボックスに特定カテゴリーの記事タイトルを表示
function add_select_item_course( $children, $atts ) {
if ( $atts['name'] == 'course' ) {
$arg = array(
'posts_per_page' => -1,
'orderby' => 'title',
'order' => 'ASC',
'category_name' => 'qualification'
);
$cat_posts = get_posts( $arg );

foreach( $cat_posts as $cat_post ){
$children[$cat_post->post_title] = $cat_post->post_title;
}
}
return $children;
}
add_filter( 'mwform_choices_mw-wp-form-★★★', 'add_select_item_course', 10, 2 );

 

3行目「course」はセレクトボックスにつけたnameです。
8行目は連動させたいカテゴリーのスラッグ「qualification」になります。
18行目の★★★にはフォーム識別子の数字が入ります。

お名前
メールアドレス
ご希望の講座

セレクトボックスに特定のカテゴリーの記事タイトルが自動で出力されました!ありがとうございます!!