セレクトボックスでカテゴリ毎の記事一覧を表示したい
問題①
セレクトボックスにて子タームを持つ親タームを選択するとセレクトボックスのselectedが子タームになってしまう。
また、記事も親の記事ではなく子タームの記事が表示されてしまいます。。
問題②
ALLを選択するとカスタムポストの記事を全表示にしたく、
現状該当のソースコードで出来ているのですが
恐らくこれが原因でwp_pagenaviの2ページ目以降がTOPにリダイレクトされてしまいますが
方法はありますでしょうか。
▼パーマリンクの設定(プラグイン使用)
/customtaxpost/%customtax%/%postname%/としています。
問題③
②と関連しますが記事の投稿時、ターム(カテゴリ)を1件もチェックしていない場合、
何も表示されない認識ですが記事一覧に飛ぶと全件表示されてしまいます。。
使用テンプレート
taxonomy-customtax.php
該当のソースコード
PHP
1 <select name="select" onChange="location.href=value;"> 2 <option value="/customtaxpost/all/">ALL</option> 3 <?php 4 $terms = get_terms('customtax'); 5 // 2. foreach文でタクソノミーのタームをすべて表示する 6 foreach($terms as $term) { 7 $terms = get_the_terms($post->ID,'customtax'); 8 $slug = $terms[0]->slug; 9 // 3. if文でタクソノミーページの場合 & 現在表示されているページと同じカテゴリーの場合「selected」属性を付与する 10 if(is_tax() && $slug == $term->slug){ 11 echo '<option value="'.get_term_link($term->slug,'customtax').'" selected>'.$term->name.'</option>'; 12 }else{ 13 echo '<option value="'.get_term_link($term->slug,'customtax').'">'.$term->name.'</option>'; 14 } 15 } 16 ?> 17 </select> 18 19▼記事一覧のループ 20<?php 21$term = wp_get_object_terms($post->ID, 'customtax'); 22$term_name = $term[0]->name; //ターム名 23$term_slug = $term[0]->slug; //タームのスラッグ 24$paged = get_query_var('paged') ? get_query_var('paged') : 1; 25$args = array( 26 'post_type' => 'customtaxpost', 27 'taxonomy' => 'customtax', 28 'term' => $term_slug, 29 'paged' => $paged, 30 'posts_per_page' => 12 31); 32$the_query = new WP_Query( $args ); 33if ( $the_query->have_posts() ) : 34 while ( $the_query->have_posts() ) : 35 $the_query->the_post(); 36?> 37 38<div class="mod-list__box"> 39 <a href="<?php the_permalink(); ?>" class="mod-list__link"> 40 <div class="mod-list__img"> 41 <img src="/img/list/img01.png" alt=""> 42 </div> 43 <p class="mod-list__txt"><?php the_title(); ?></p> 44 <?php 45 $terms = get_the_terms($post->ID, 'customtax'); 46// 複数のカスタム分類を指定する場合は配列を使用する 47// $terms = get_the_terms($post->ID, array('カスタム分類名1','カスタム分類名2')); 48 if ( $terms ) { 49 foreach ( $terms as $term ) { 50 echo '<span class="mod-list__cat">'.$term->name.'</span>'; 51 } 52 } 53 ?> 54 </a> 55</div> 56<!-- [/mod-list__box] --> 57 58<?php endwhile; 59endif; 60?> 61 62<?php if(function_exists('wp_pagenavi')) { wp_pagenavi(array('query' => $the_query)); } ?> 63 64<!-- ##記事が存在する場合にループ直後に表示する内容をここに記述する## --> 65 66<?php 67 wp_reset_postdata(); 68?>
試したこと
初心者で調べても不明だったため、助言いただければ嬉しいです。
何卒よろしくお願い致します。
あなたの回答
tips
プレビュー