自分のためのメモ

カスタム投稿のターム名をMWフォームに引き継ぐ

まずここにチェックを入れて、

遷移元のテンプレートのリンク先指定には

<a href="<?php echo home_url('entry/?post_id='.get_the_ID()) ?>">登録はこちら</a>

のように記載することで投稿タイトルやID、スラッグなどの基本的な値は引っ張ってくれる。

投稿タイトルを表示するだけならMWフォーム編集画面内で{post_title}で表示させることができるが、
ターム名やカスタムフィールドの値は上記の「基本的な値」に含まれない。
なので、追加でfunction.php側でタームを取得・表示するためのMW向けのフィルターを定義。

<!-- ※フォームのkeyが777の場合 -->
function my_mwform_post_content_777( $content, $Data ) {
	$term_name='';
	$query_string = empty( $args['querystring'] ) ? "post_id" : $args['querystring'];
	$post_id      = filter_input(INPUT_GET, $query_string, FILTER_VALIDATE_INT);
	$post         = $post_id > 0 ? get_post($post_id) : null;
	if($post){
		$term_names=array();
		if ($terms = get_the_terms($post->ID, 'タクソノミースラッグ')) {
			foreach ( $terms as $term ) {$term_names[] = $term->name;
			}
		}
		$term_name =implode('、',$term_names);
	}
	$search='{aaa}';
	$content = str_replace($search, $term_name, $content);
	return $content;
}
add_filter( 'mwform_post_content_mw-wp-form-777', 'my_mwform_post_content_777', 10, 2 );

で、フォーム編集画面で
{aaa}と入力すれば任意の箇所にタームの値を表示させることができ、
[mwform_hidden name=”任意名” size=”30″ value=”{aaa}“]
と併せて入れておけば、name属性を自動返信メールに含めることができ、確認画面などにも引き継げるようになる。