it-swarm.com.de

Wie schließe ich eine benutzerdefinierte Taxonomie von der Post-Schleife aus?

Gibt es eine einfache oder einfache Möglichkeit, alle Posts von einer benutzerdefinierten Taxonomie in der Schleife auszuschließen? Ich habe hoch und tief geschaut, und weder SE, SO noch Google scheinen eine klare Antwort zu haben.

Ich weiß, dass dies über eine WPDB-Abfrage erfolgen kann, aber das scheint nur ein riesiges Seil zu sein, um nach etwas zu springen, das ziemlich einfach sein sollte.

19
Thomas

Sie möchten den Operator NOT EXISTS zusammen mit der Übergabe des Taxonomie-Slugs verwenden, wodurch die Abfrage angewiesen wird, keine der ausgewählten Kategorien Ihrer benutzerdefinierten Taxonomie in die Schleife aufzunehmen.

Um alle Posts auszuschließen, die sich in der Taxonomie "fruit" befinden (unabhängig von der Fruchtart), hier das Snippet:

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

$query = new WP_Query( $args );
10
aniskhan001

Die Lösung dafür ist nicht wirklich so bekannt, aber sie sollte es sein.

Sie können Folgendes tun:

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

Das Operatorargument kann auch andere Ausdrücke annehmen, aber der obige Code besagt im Grunde, dass alle Posts aus der Taxonomie "Kategorie" abgerufen werden, die nicht die Ausdrücke "Katze" oder "Hund" enthalten.

23

Gehen Sie wie folgt vor, um benutzerdefinierte Beitragstypen und Taxonomien festzulegen:

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

        ),
   )
);

Dies funktionierte perfekt, um benutzerdefinierte Taxonomie vom benutzerdefinierten Beitragstyp auszuschließen. Ich wollte nur den Abfrage-Schleifencode hinzufügen, um das Snippet zu vervollständigen: while ($ the_query-> have_posts ()): $ the_query-> the_post ();

8
Tim Bowen

Ich verwende das "RYO‘ Category Visibility ’WordPress Plugin", das ziemlich gut zu funktionieren scheint.

Auf einer Admin-Seite können Sie entscheiden, welche Kategorien in verschiedenen Bereichen sichtbar oder ausgeschlossen sind.

http://ryowebsite.com/wp-plugins/category-visibility/

-Adam

0
adamf

Ich habe Folgendes getan, um Posts von einem bestimmten Taxonomiebegriff auszuschließen:

$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 );
0
erachnid
query_posts( array(
    'post_type' => 'listings',
    'tax_query' => array(
        array(
            'taxonomy' => 'status',
            'field'    => 'slug',
            'terms'    => 'sold',
            'operator' => 'NOT IN'
            ),
        )
    )
);

Dieser Code schließt status => sold from post_type => listings aus

0
subhash jangid