WordPress カテゴリが複数指定されている場合のカテゴリ除外方法

TIPS 0 Takuya Kobayashi

カテゴリがAとBが設定されている記事で、Aを除外したいけど、Bが設定されている場合は表示したいという場合。

単純なカテゴリの除外であれば、category_not_in等で可能だが、これだとAとBが同時に設定されていた場合、除外されてしまう。

おそらくこのフォーラムの質問者と同じ状況だと思います。

解決方法はtax_queryを使います。

$args = array(
'post_type' => 'post',
'paged' => $paged,
'tax_query' => array(
array(
'taxonomy' => 'category',
'field' => 'slug',
'terms' => array( 'A', 'B' ),
'operator' => 'AND',
),
array(
'taxonomy' => 'category',
'field' => 'slug',
'terms' => array( 'A' ),
'operator' => 'NOT IN',
),
'relation' => 'OR',
),
);
query_posts( $args );

AとBが設定されている記事と、Aが設定されていない記事を取得します。relation=>’OR’により両方の条件が生きます。

--
以上