できないこと
カスタム投稿タイプの詳細ページにあるカスタムフィールドの値を
MW WP Formへ渡す際に、条件によっては確認ページへ値の引き継ぎが行われません。
ご教示いただけましたら幸いです。
実現できていること・できていないこと
フォームへ値を渡すところまでは達成できているのですが、
柔軟コンテンツにおいて同じレイアウトが2つ以上あるページでは
確認画面へ値が引き継がれません。
「見学する」「体験する」という2種類のレイアウトが存在し、
- 「見学する」が1つ かつ 「体験する」が1つ → 正常に表示
- 「見学する」が1つのみ もしくは 「体験する」が1つのみ → 正常に表示
- 「見学する」が2つ以上 もしくは 「体験する」が2つ以上 など同じ種類のレイアウトが複数入る場合 → ※確認ページで値が表示されない※
問題箇所の確認ページでの状況としては、
以下のようにinput の値は渡っています。
<input type="hidden" name="your_course" value="体験する【轆轤(ろくろ)成型体験】">
各記述
single-factory.phpの記述
<!---- 自由選択項目 ----//「見学する」「体験する」 ----> <?php if( have_rows('factory_action_flexible') ): ?> <?php while ( have_rows('factory_action_flexible') ) : the_row(); ?> <!---- 「見学する」を選択した場合 ----> <?php if( get_row_layout() == 'factory_visit_layout' ): ?> <h3 class="single-info-title"><?php the_sub_field('factory_visit_title'); ?></h3> <!-- ※詳細省略※ --> <a class="reserve-btn-link" id="type-visit" href="<?php echo home_url(); ?>/reservation/?post_id=<?php echo get_the_ID(); ?>">見学予約する</a> <?php endif; ?> <!---- 「体験する」を選択した場合 ----> <?php if( get_row_layout() == 'factory_experience_layout' ): ?> <h3 class="single-info-title"><?php the_sub_field('factory_experience_title'); ?></h3> <!-- ※詳細省略※ --> <a class="reserve-btn-link" id="type-experience" href="<?php echo home_url(); ?>/reservation/?post_id=<?php echo get_the_ID(); ?>">体験予約する</a> <?php endif; ?> <?php endwhile; endif; ?>
MW WP Formの設定
「URL引数を有効にする」にチェック。
selectbox箇所
[mwform_select name="your_course" id="your_course" class="your_course" children="" post_raw="true"]
URL設定
入力画面URL /reservation/
確認画面URL 空
完了画面URL /reservation/reservation-fin/
エラー画面URL 空
functions.phpの記述
function SELECT_LOOP( $children, $atts ) { if ( $atts['name'] == 'your_course' && !empty( $_GET['post_id'] )) { $pid = wp_unslash( $_GET['post_id'] ); if( have_rows('factory_action_flexible',$pid) ): while ( have_rows('factory_action_flexible',$pid) ) : the_row(); if( get_row_layout() == 'factory_visit_layout' ): //---- 「見学する」を選択した場合 ---- $visitTitle = strip_tags(get_sub_field('factory_visit_title')); $select = "見学する"."【".$visitTitle."】"; $children[$select] = $select; elseif( get_row_layout() == 'factory_experience_layout' ): //---- 「体験する」を選択した場合 ---- $experienceTitle = strip_tags(get_sub_field('factory_experience_title')); $select = "体験する"."【".$experienceTitle."】"; $children[$select] = $select; endif; endwhile;endif; } return $children; } add_filter( 'mwform_choices_mw-wp-form-639', 'SELECT_LOOP', 10, 2 );
その他 前提等
- カスタムフィールドはACF Pro版を使用しています。
- 柔軟コンテンツの最大表示数は4件に設定してあります。
あなたの回答
tips
プレビュー