Comment exclure une taxonomie personnalisée de la boucle de publication

16

Existe-t-il un moyen simple ou facile d'exclure toutes les publications d'une taxonomie personnalisée dans la boucle? Je cherche haut et bas, et ni SE, SO ou Google ne semblent avoir une réponse directe.

Je sais que cela peut être fait via une requête WPDB, mais cela ressemble à une énorme corde à sauter pour quelque chose qui devrait être assez simple.

    
posée Thomas 16.03.2011 - 15:50

6 réponses

8

Vous voudriez utiliser l'opérateur NOT EXISTS avec la balise taxonomie, qui indique à la requête de ne pas inclure la catégorie choisie dans votre taxonomie personnalisée à l'intérieur de la boucle.

Pour exclure tous les messages de la taxonomie "fruit" (quel que soit le type de fruit), voici l'extrait:

$args = array(
    'post_type'      => 'post',
    'tax_query'      => array(
        array(
            'taxonomy' => 'fruit',
            'operator' => 'NOT EXISTS'
        )
    )
);

$query = new WP_Query( $args );
    
réponse donnée aniskhan001 17.04.2017 - 18:23
20

La solution à ce problème n’est pas vraiment annoncée, mais elle devrait l’être.

Vous pouvez effectuer les opérations suivantes:

$args['tax_query'] = array(
    array(
        'taxonomy' => 'category',
        'terms' => array('cat', 'dog'),
        'field' => 'slug',
        'operator' => 'NOT IN',
    ),
);
query_posts($args);

L'argument de l'opérateur peut prendre d'autres termes, mais le code ci-dessus dit en gros d'obtenir tous les posts de la catégorie de taxonomie 'qui ne contiennent pas les termes' chat 'ou' chien '.

    
réponse donnée Dwayne Charrington 21.03.2011 - 12:07
7

Voici comment procéder pour les types d'articles et les taxonomies personnalisés:

$happening = new WP_Query(
array( 
  'post_type'  => 'news',        // only query News post type
  'tax_query' => array(
    array(
        'taxonomy'  => 'news-cat',
        'field'     => 'slug',
        'terms'     => 'media', // exclude items media items in the news-cat custom taxonomy
        'operator'  => 'NOT IN')

        ),
   )
);

Cela a parfaitement fonctionné pour exclure la taxonomie personnalisée du type d'article personnalisé. Je voulais juste ajouter le code de la boucle de requête pour terminer l'extrait de code:     while ($ the_query- > have_posts ()): $ the_query- > the_post ();

    
réponse donnée Tim Bowen 29.09.2011 - 21:47
0

J'utilise le "plug-in WordPress RYO" Visibilité de la catégorie "qui semble fonctionner plutôt bien.

Vous pouvez choisir sur une page d'administration les catégories visibles ou exclues de divers domaines.

enlace

-Adam

    
réponse donnée adamf 16.03.2011 - 17:34
-1

J'ai fait ce qui suit pour exclure les messages d'un terme de taxonomie donné:

$argos = array( 
    'tax_query' =>  array (
        array(
            'taxonomy' => 'topics', // My Custom Taxonomy
            'terms' => 'college', // My Taxonomy Term that I wanted to exclude
            'field' => 'slug', // Whether I am passing term Slug or term ID
            'operator' => 'NOT IN', // Selection operator - use IN to include, NOT IN to exclude
        ),
    ),
    'post_type'=>'page', // Post type I want to show, can be a custom post type too
    'posts_per_page' => -1,
    'orderby' => 'title',
    'order'=>'ASC',
    'post_parent' =>$post->ID // show child posts or pages of current page/post
); 

$query = new WP_Query( $args );
    
réponse donnée erachnid 27.04.2012 - 10:00
-1
query_posts( array(
    'post_type' => 'listings',
    'tax_query' => array(
        array(
            'taxonomy' => 'status',
            'field'    => 'slug',
            'terms'    => 'sold',
            'operator' => 'NOT IN'
            ),
        )
    )
);

Ce code exclut status = > vendu à partir de post_type = > annonces

    
réponse donnée subhash jangid 21.01.2017 - 09:49

Lire d'autres questions sur les étiquettes