「MW WP Form 選択肢などにカスタムフィールド値を代入する」のバリエーションです。
今回は、投稿の持つタームをセレクトボックスに代入します。
フォーム
[mwform_select name="select_job" post_raw="true" children=":選択してください"]
- フォーム項目「select_job」が対象
- 先頭に「選択してください」を加える
- 必須にするなら「select_job」をバリデーションルールに加える
functions.php
/* ---------- 募集職種を選択肢に加える ---------- */
function add_select_job( $children, $atts ) {
if( $atts['name'] === 'select_job' ){
$terms = wp_get_object_terms( $_GET['post_id'], 'job' );
if( !empty( $terms ) ){
foreach ( $terms as $term ){
$select = $term->name;
$children[$select] = $select;
}
}
}
return $children;
}
add_filter( 'mwform_choices_mw-wp-form-XXX', 'add_select_job', 10, 2 );
上記はページ遷移して、遷移元の投稿データを引き継ぐケースです。
ページ遷移せず、投稿記事にフォームを出力する場合は、
「wp_get_object_terms( $_GET[‘post_id’], ‘job’ )」を、
「wp_get_object_terms( $post->ID, ‘job’ )」に。
投稿が持つタームではなく、すべてのタームを出力するなら、
「wp_get_object_terms( $_GET[‘post_id’], ‘job’ )」を、
「get_terms( ‘job’ )」に。
使用例
タイトルが「支店、事業所、施設」等で、複数の「職種」を募集している求人情報などに。
タイトルが「商品」で、バリエーションが「色、サイズ」などのケースでも使えるでしょう。