MW WP Form 選択肢にタームを代入する

ワードプレス

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’ )」に。

使用例

タイトルが「支店、事業所、施設」等で、複数の「職種」を募集している求人情報などに。

タイトルが「商品」で、バリエーションが「色、サイズ」などのケースでも使えるでしょう。