Categories: WordPress

WordPressのカスタムタクソノミーで絞り込み

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

以上

 

nakaike