web-dev-qa-db-fra.com

Problème avec get_posts, tax_query et compter le nombre de posts

Je veux compter le nombre de messages qui ont simultanément 3 taxonomies différentes. Le code que j'utilise est le suivant:

$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);

Le problème survient lorsque les couleurs et tapez le terme de taxonomie que je recherche. car n'existe pas ...

  • si la collection n'existe pas, le compte est 0

  • si le type n'existe pas, il renvoie les publications avec la collection et la couleur spécifiées.

  • si la couleur n'existe pas, elle renvoie les publications avec la collection et le type spécifiés

ce que j’avais dépensé, puisque la relation est AND, c’est que si l’un des termes n’existe pas, le décompte doit toujours être égal à 0, au lieu d’ignorer fondamentalement ce terme et de ne prendre en compte que les deux autres ...

est-ce que je fais quelque chose de mal? Comment puis-je le réparer?

merci beaucoup!

1
Stefano

Essayez à nouveau de supprimer les arguments d'opérateur et de relation comme suit: voici un lien utile 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
Md Toufiqul Islam