web-dev-qa-db-ja.com

特定の分類法のすべての投稿をクエリする

確かにそれは非常に単純ですが、私はこれを行う方法を把握することはできません。

特定の分類法が設定されているすべての投稿をクエリする必要があります。このような:

$query03 = array( 
'numberposts' => 5, 
'post_type' => array(
    'video'
    ), 
'tax_query' => array(
        array(
            'taxonomy' => 'product',
            'field' => 'slug',
            'terms' => **all_the_terms_in_taxonomy**
        )
    ) 
);

termsフィールドをワイルドカードに設定したいです。私はterms fildに配列を入れることができることを知っていますが、リストは非常に長く、問い合わせの重みについて心配しています。

2
Francesco

'terms'配列から'tax_query'キーを単純に省略してみましたか?

$query03 = array( 
    'numberposts' => 5, 
    'post_type' => array(
        'video'
    ), 
    'tax_query' => array(
        array(
            'taxonomy' => 'product',
            'field' => 'slug'
        )
    ) 
);

あるいは、クエリの重要性についてはあまり心配しないでください。結果として得られるクエリは、クエリ引数の複雑さや、クエリ引数配列の大きさに関係なく、実際のものになります。ですから、 get_terms を使って、すべての用語を取り込むことをお勧めします。

<?php get_terms( $taxonomy, $args ); ?>

'fields''ids'に設定すると、クエリ引数配列で直接使用できます。これにより、用語オブジェクトの配列ではなく、用語IDの配列が返されます。

$query03 = array( 
    'numberposts' => 5, 
    'post_type' => array(
        'video'
    ), 
    'tax_query' => array(
        array(
            'taxonomy' => 'product',
            'field' => 'id',
            'terms' => get_terms( 'product', array( 'fields' => 'ids' ) )
        )
    ) 
);

編集する

IDの代わりにスラッグという用語を使用して、代わりの 'tax_query'を使用します。

    'tax_query' => array(
        array(
            'taxonomy' => 'product',
            'field' => 'slug',
            'terms' => get_terms( 'product', array( 'fields' => 'names' ) )
        )
    ) 
1
Chip Bennett