前提・実現したいこと
セミナーの募集の投稿ページから予約フォームのページに遷移し、募集ページの情報を引き継いで表示させたいです。
例)
「セミナーA:東京会場」→予約する→「『セミナーA:東京会場』の予約フォーム」
「セミナーA:大阪会場」→予約する→「『セミナーA:大阪会場』の予約フォーム」
↑というように前ページの情報をフォームページのタイトルとして表示させたいです。
フォームはMW WP Formを使用します。
ページの構成
・セミナー予約の固定ページ×1(動的に該当セミナーのタイトルを表示させる)
・セミナー予約フォーム×1(フォームの内容は全て統一)
・セミナーのタイトルをフィルターフックで書き換えるためのカスタムフィールド
試したこと
1.MW WP Formのフィルターフックを設定
function add_seminar_title( $children, $atts ) {
if ( $atts['name'] == 'seminar_title' ) {
$seminar_title = get_posts( array(
'post_type' => 'seminar',
'posts_per_page' => -1,
'include' => $_GET['smnr'], //
) );
foreach ( $seminar_title as $seminar ) {
$children[esc_attr($seminar->post_title)] = esc_html($seminar->post_title);
}
}
return $children;
}
add_filter( 'mwform_choices_mw-wp-form-40', 'add_seminar_title', 10, 2 );
2.カスタムフィールド"seminar"を作成。
function seminar_title_custom_post_type()
{
$labels = array(
'name' => _x('セミナータイトル', 'post type general name'),
'singular_name' => _x('セミナータイトル', 'post type singular name'),
'add_new' => _x('セミナータイトルを追加', 'seminar'),
'add_new_item' => __('新しいセミナータイトルを追加'),
'edit_item' => __('セミナータイトルを編集'),
'new_item' => __('新しいセミナータイトル'),
'view_item' => __('セミナータイトルを編集'),
'search_items' => __('セミナータイトルを探す'),
'not_found' => __('セミナータイトルはありません'),
'not_found_in_trash' => __('ゴミ箱にセミナータイトルはありません'),
'parent_item_colon' => ''
);
$args = array(
'labels' => $labels,
'public' => true,
'publicly_queryable' => true,
'show_ui' => true,
'query_var' => true,
'rewrite' => true,
'capability_type' => 'post',
'hierarchical' => false,
'menu_position' => 5,
'has_archive' => true,
'supports' => array('title','editor','author','excerpt','comments')
);
register_post_type('seminar',$args);
}
add_action('init', 'seminar_title_custom_post_type');
3.各セミナーページから予約フォームに遷移する際に、URLにGETクエリーをつけておく。
<a href="<?php echo home_url();?>/rsv?smnr=<?php echo (int)$post->ID; ?>">予約する</a>
1、2、3まで書いたのですが、上手く表示されません。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。