it-swarm.com.de

Taxonomie-Abfrageoperator "NICHT NUR IN"?

Ich habe mehrere Benutzer, die Inhalte zu eingeschränkten Kategorien (mithilfe von RoleScoper) in meinem WordPress-Setup hinzufügen, die nicht auf der Startseite angezeigt werden (benutzerdefinierte Vorlage mit query_posts()).

Ich suche nach einer Möglichkeit, den übermittelten Inhalt auf der Startseite zu "bewerben", indem er einer anderen Kategorie hinzugefügt wird.

Mein Loop-Code sieht folgendermaßen aus:

<?php
query_posts($query_string . '&cat=-37');
if (have_posts()):
    while (have_posts()): the_post(); ?>

Dadurch werden alle Posts in Kategorie 37 ausgeschlossen. Selbst wenn ich den Post einer anderen Kategorie hinzufüge, wird er dennoch ausgeschlossen.

Gibt es eine Möglichkeit, einen Beitrag auszuschließen, wenn er nur zu dieser einen Kategorie gehört?

2
matpie

Es gibt keine einfache Möglichkeit, dies über WP_Query() zu tun. Je nachdem, wie viele Kategorien Sie haben, ist Folgendes möglicherweise keine gute Idee. Wenn Sie ~ 20 haben, können Sie ok sein. Anstatt also "Alle Posts außer denen in 37" zu sagen, würden Sie "Alles in allen Begriffen abrufen (term_id 37 nicht angeben").

Dazu müssen Sie einen category__in für alle Ihre anderen Kategorien verwenden:

// Get all the category IDs (except 37)
$categories = get_terms( 'category', array( 'exclude' => array( 37 ), 'fields' => 'ids' ) );

query_posts( array( 'category__in' => $categories ) );

Dadurch erhalten Sie alle Posts, die sich in einer anderen Kategorie als/bis 37 befinden. Wenn Sie dies jedoch in einer großen Anzahl von Kategorien tun, wird die Abfrage verlangsamt (ich denke beispielsweise an 40.000 Posts).

1
Joe Hoyle