前提・実現したいこと
現在、絞り込み検索機能を追加する為の実装を行なっております。
1つ条件の絞り込みはなんとかできるようになったのですが
2条件ある場合の絞り込みがどうしても上手くいきません。
$_GET[]の項目に2つのカスタムタクソノミー名が入ればいいのではと考えています。
色々と調べてはみたのですがなかなか解決に至りませんでした。。。
もし、ご存知の方がいらっしゃったら教えていただけないでしょうか?
お手数をおかけしますがよろしくお願い致します。
該当のソースコード
フォーム側PHP
<aside class="l-aside"> <div class="p-aside"> <form role="search" method="get" action="<?php echo esc_url(home_url('/')); ?>"> <p class="p-aside_text">イベントを検索する</p> <dl class="p-aside__selectList"> <dt class="p-aside__listTitle">種目</dt> <dd class="p-aside__selectWrap"> <select class="p-aside__select" name="sports"> <option value="">選択してください</option> <?php $terms = get_terms('sports'); foreach ( $terms as $term ) : ?> <option value="<?php echo $term->slug; ?>" name="<?php echo $term->slug; ?>[]"><?php echo $term->name; ?></option> <?php endforeach; ?> </select> </dd> <dt class="p-aside__listTitle">都道府県</dt> <dd class="p-aside__selectWrap"> <select class="p-aside__select" name="prefectures"> <option value="">選択してください</option> <?php $terms = get_terms('prefectures'); foreach ( $terms as $term ) : ?> <option value="<?php echo $term->slug; ?>" name="<?php echo $term->slug; ?>[]"><?php echo $term->name; ?></option> <?php endforeach; ?> </select> </dd> </dl> <input type="hidden" name="s" value="<?php the_search_query(); ?>"> <p class="p-aside__buttonWrap"><input type="submit" class="p-aside__button c-button" value="検索"></input></p> </form> </div> </aside> <main> <div class="p-event"> <ul class="p-event__cards"> <?php $wpQuery = subLoop(12,$paged,"single-event"); if($wpQuery -> have_posts()): while($wpQuery -> have_posts()): $wpQuery -> the_post(); ?> <li class="p-event__cardWrap"> <a class="c-card" href="<?php the_permalink(); ?>"> <p class="c-card__thumbnail" style="background-image: url(<?php echo wp_get_attachment_url(get_post_thumbnail_id($post_id)); ?>)"></p> <dl class="c-card__itemList"> <dt class="c-card__itemTitle">大会名</dt> <dd class="c-card__itemData"> <?php if(mb_strlen(get_field("大会名"))>15) { $hoge= mb_substr(get_field("大会名"),0,14) ; echo $hoge. … ;} else {echo get_field("大会名");} ?> </dd> <dt class="c-card__itemTitle">チーム名</dt> <dd class="c-card__itemData"> <?php if(mb_strlen(get_field("チーム名"))>15) { $hoge= mb_substr(get_field("チーム名"),0,14) ; echo $hoge. … ;} else {echo get_field("チーム名");} ?> </dd> <dt class="c-card__itemTitle">場所</dt> <dd class="c-card__itemData"> <?php if(mb_strlen(get_field("場所"))>15) { $hoge= mb_substr(get_field("場所"),0,14) ; echo $hoge. … ;} else {echo get_field("場所");} ?> </dd> <dt class="c-card__itemTitle">日時</dt> <dd class="c-card__itemData"> <?php if(mb_strlen(get_field("日時"))>18) { $hoge= mb_substr(get_field("日時"),0,17) ; echo $hoge. … ;} else {echo get_field("日時");} ?> </dd> </dl> </a> </li> <?php endwhile; endif; wp_reset_postdata(); ?> </ul> </div> </main>
出力側PHP
<aside class="l-aside"> <div class="p-aside"> <form role="search" method="get" action="<?php echo esc_url(home_url('/')); ?>"> <p class="p-aside_text">イベントを検索する</p> <dl class="p-aside__selectList"> <dt class="p-aside__listTitle">種目</dt> <dd class="p-aside__selectWrap"> <select class="p-aside__select" name="sports"> <option value="">選択してください</option> <?php $terms = get_terms('sports'); foreach ( $terms as $term ) : ?> <option value="<?php echo $term->slug; ?>" name="<?php echo $term->slug; ?>[]"><?php echo $term->name; ?></option> <?php endforeach; ?> </select> </dd> <dt class="p-aside__listTitle">都道府県</dt> <dd class="p-aside__selectWrap"> <select class="p-aside__select" name="prefectures"> <option value="0">選択してください</option> <?php $terms = get_terms('prefectures'); foreach ( $terms as $term ) : ?> <option value="<?php echo $term->slug; ?>" name="<?php echo $term->slug; ?>[]"><?php echo $term->name; ?></option> <?php endforeach; ?> </select> </dd> </dl> <input type="hidden" name="s" value="<?php the_search_query(); ?>"> <p class="p-aside__buttonWrap"><input type="submit" class="p-aside__button c-button" value="検索"></input></p> </form> </div> </aside> <main> <div class="p-event"> <ul class="p-event__cards"> <!-- 下から検索結果 --> <?php $hoge = $_GET['sports']; if($hoge) { $taxquery_taxonomy = array( 'taxonomy' => 'sports', 'terms' => $hoge, 'field' => 'slug', ); } $args = array( 'post_type' => 'post', 'posts_per_page' => 12, 's' => get_search_query(), 'tax_query' => array( 'relation' => 'AND', $taxquery_taxonomy, ), ); $sub_query = new WP_Query( $args ); if ( $sub_query->have_posts() ) : while ( $sub_query->have_posts() ) : $sub_query->the_post(); ?> <li class="p-event__cardWrap"> <a class="c-card" href="<?php the_permalink(); ?>"> <p class="c-card__thumbnail" style="background-image: url(<?php echo wp_get_attachment_url(get_post_thumbnail_id($post_id)); ?>)"></p> <dl class="c-card__itemList"> <dt class="c-card__itemTitle">大会名</dt> <dd class="c-card__itemData"> <?php if(mb_strlen(get_field("大会名"))>15) { $hoge= mb_substr(get_field("大会名"),0,14) ; echo $hoge. … ;} else {echo get_field("大会名");} ?> </dd> <dt class="c-card__itemTitle">チーム名</dt> <dd class="c-card__itemData"> <?php if(mb_strlen(get_field("チーム名"))>15) { $hoge= mb_substr(get_field("チーム名"),0,14) ; echo $hoge. … ;} else {echo get_field("チーム名");} ?> </dd> <dt class="c-card__itemTitle">場所</dt> <dd class="c-card__itemData"> <?php if(mb_strlen(get_field("場所"))>15) { $hoge= mb_substr(get_field("場所"),0,14) ; echo $hoge. … ;} else {echo get_field("場所");} ?> </dd> <dt class="c-card__itemTitle">日時</dt> <dd class="c-card__itemData"> <?php if(mb_strlen(get_field("日時"))>18) { $hoge= mb_substr(get_field("日時"),0,17) ; echo $hoge. … ;} else {echo get_field("日時");} ?> </dd> </dl> </a> </li> <?php endwhile; endif; wp_reset_postdata(); ?> </ul> </div> </main>
補足情報(FW/ツールのバージョンなど)
・カスタムタクソノミーは
sports
prefectures
の2つになります
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/06/14 14:29
2021/06/15 03:49