投稿一覧(category.phpやtaxnomy.php)で、カスタムタクソノミーで絞り込み表示できるようにします。
まずは、絞り込みのための一覧を表示します。
get_terms()で、カスタムタクソノミーの一覧を取得できます。
たとえば、get_terms(‘howto_category’,’orderby=slug’) とすれば、howto_categoryというカスタムタクソノミーをslug順で並べて取得できます。
0) : ?>クリックすると絞り込みます。
count) >0): ?> name); ?>
で、URLにGETパラメータをつけておいて、そのリンクをクリックすると、そのパラメータで絞り込み。
get_query_var(‘paged’)で、現在のページを取得して、query_postsで取得。
$query_str .= '&howto_category=' . htmlentities($_GET['howto_cat'], ENT_QUOTES, "utf-8"); query_posts($query_str); endif; ?>
だがしかし。ほんとうは、pre_get_posts でやるべきところですので、function.phpあたりに、以下を。(pre_get_posts使うのなら、上記のコードquery_posts()はいりません。)
function my_posts_per_page($query) { if( is_admin() || ! $query->is_main_query() ){ return; } if ( $query->is_category('howto') ) { if (isset($_GET['howto_cat'])) { $howto_cat = htmlentities($_GET['howto_cat'], ENT_QUOTES, "utf-8"); $taxquery = array( array( 'taxonomy' => 'howto_category', 'field' => 'slug', 'terms' => array( $howto_cat ) ) ); $query->set( 'tax_query' , $taxquery ); } return; } } add_action( 'pre_get_posts', 'my_posts_per_page' );
以上