同時に3つの分類法がある投稿の数を数えたいと思います。私が使っているコードはこれです:
$products = get_posts(array(
'post_type' => 'products',
'posts_per_page' => -1,
'post_status' => 'publish',
'tax_query' => array(
'relation' => 'AND',
array(
'taxonomy' => 'collection',
'field' => 'slug',
'terms' => array($current_collection),
'operator' => 'IN'
),
array(
'taxonomy' => 'type',
'field' => 'slug',
'terms' => array($current_type),
'operator' => 'IN'
),
array(
'taxonomy' => 'color',
'field' => 'slug',
'terms' => array($current_type),
'operator' => 'IN'
)
)
));
$countpost = count($products);
問題は、色とタイプの分類用語が表示されているときに発生します。存在しないため...
コレクションが存在しない場合、カウントは0です。
タイプが存在しない場合は、指定されたコレクションと色で投稿を返します
色が存在しない場合は、指定されたコレクションとタイプの投稿を返します
関係はANDなので、その用語を基本的に無視して他の2つだけを考慮するのではなく、いずれかの用語が存在しない場合、カウントは常に0になるはずです。
私は何か悪いことをしていますか?どうすれば修正できますか?
どうもありがとう!
これをもう一度試して、次のように演算子と関係の引数を削除してください。こちらは便利なリンクです http://ottopress.com/2010/wordpress-3-1-advanced-taxonomy-queries/
$products = get_posts(array(
'post_type' => 'products',
'posts_per_page' => -1,
'post_status' => 'publish',
'tax_query' => array(
array(
'taxonomy' => 'collection',
'field' => 'slug',
'terms' => array($current_collection)
),
array(
'taxonomy' => 'type',
'field' => 'slug',
'terms' => array($current_type)
),
array(
'taxonomy' => 'color',
'field' => 'slug',
'terms' => array($current_type)
)
)
));
$countpost = count($products);