投稿一覧(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' );
以上