web-dev-qa-db-ja.com

Get_posts、tax_query、投稿数のカウントに関する問題

同時に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になるはずです。

私は何か悪いことをしていますか?どうすれば修正できますか?

どうもありがとう!

1
Stefano

これをもう一度試して、次のように演算子と関係の引数を削除してください。こちらは便利なリンクです 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);
1