web-dev-qa-db-fra.com

Interroger tous les articles d'une taxonomie donnée

C’est sûr que c’est très simple, mais je ne peux pas comprendre comment faire cela.

Je dois interroger toutes les publications qui ont un ensemble de taxonomie spécifique. Comme ça:

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

Je veux définir le champ terms un caractère générique. Je sais que je pourrais peupler terms fild avec un tableau, mais la liste est très longue et le poids de la requête m'inquiète.

2
Francesco

Avez-vous essayé simplement d'omettre la clé 'terms' du tableau 'tax_query'?

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

Sinon, je ne m'inquiéterais pas vraiment du poids de la requête. La requête résultante sera ce qu'elle sera, indépendamment de la complexité de la requête, ou de la taille du tableau de la requête. Donc, je recommanderais simplement de tirer tous vos termes via get_terms :

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

Vous pouvez l’utiliser directement dans votre tableau d’arguments de requête en définissant 'fields' sur 'ids', ce qui renverra un tableau d’ID de termes, plutôt qu’un tableau d’objets de termes):

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

Modifier

Autre 'tax_query', en utilisant des slugs à la place des identifiants:

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