WP_Query-Argumente Kategorien und Tags

In den früheren Teilen dieser Serie haben Sie gelernt, wie WP_Query ist strukturiert und was sind seine Eigenschaften und Methoden. Im nächsten Schritt müssen Sie die verschiedenen Argumente verstehen, die Sie verwenden können, und wie Sie dies am besten tun können.

WP_Query verfügt über eine Vielzahl möglicher Argumente, wodurch es äußerst flexibel ist. Wie Sie es verwenden können, um fast alles, was in Ihrem gespeichert ist, abzufragen wp_posts Tabelle hat es Argumente für jede Permutation von Abfragen, die Sie möglicherweise für Ihren Inhalt ausführen möchten.

In diesem Tutorial werde ich zwei Arten von Argumenten für Folgendes betrachten:

  • Kategorien
  • Stichworte

Die Argumente für diese beiden Taxonomien sind ähnlich, aber es gibt einige Unterschiede, die Sie kennen sollten, wenn Sie sie effektiv nutzen möchten.

Eine Zusammenfassung der Funktionsweise von Argumenten in WP_Query

Bevor wir anfangen, wollen wir kurz aufzeigen, wie die Argumente funktionieren WP_Query. Wenn du codierst WP_Query In Ihren Designs oder Plugins müssen Sie vier Hauptelemente einfügen:

  • Die Argumente für die Abfrage verwenden Parameter, die in diesem Lernprogramm behandelt werden
  • die Abfrage selbst
  • die Schleife
  • Fertigstellung: Post-Daten zurücksetzen

In der Praxis sieht das ungefähr so ​​aus:

have_posts ()) // Beginne, die Abfrageergebnisse zu durchlaufen. while ($ query-> have_posts ()) $ query-> the_post (); // Inhalt der abgefragten Post-Ergebnisse finden Sie hier.  // Stellen Sie die ursprünglichen Postdaten wieder her. wp_reset_postdata (); ?>

Die Argumente sagen WordPress, welche Daten aus der Datenbank abgerufen werden sollen. Diese werden hier behandelt. Wir konzentrieren uns hier also nur auf den ersten Teil des Codes:

$ args = array (// Argumente für Ihre Abfrage.);

Wie Sie sehen, sind die Argumente in einem Array enthalten. Sie lernen, wie Sie diese codieren, während Sie dieses Tutorial durcharbeiten.

Kodierung Ihrer Argumente

Es gibt eine bestimmte Methode zum Codieren der Argumente im Array, die wie folgt lautet:

$ args = array ('parameter1' => 'value', 'parameter2' => 'value', 'parameter3' => 'value');

Sie müssen die Parameter und deren Werte in einfache Anführungszeichen setzen, verwenden => zwischen ihnen und trennen Sie sie mit einem Komma. Wenn Sie dies falsch verstehen, fügt WordPress möglicherweise nicht alle Ihre Argumente der Abfrage hinzu, oder Sie erhalten einen weißen Bildschirm.

Kategorie-Parameter

Beginnen wir mit Kategorie-Parametern. Die Optionen, die Sie hier haben, sind wie folgt:

  • Katze (int): Verwenden Sie die Kategorie-ID.
  • Kategoriename(Schnur): verwende Kategorie Slug (NICHT Name).
  • category__and (Array): Verwenden Sie die Kategorie-ID.
  • category__in (Array): Verwenden Sie die Kategorie-ID.
  • category__not_in (Array): Verwenden Sie die Kategorie-ID.

Beachten Sie, dass Sie für keine davon den Namen Ihrer Kategorie verwenden. Sogar die Kategoriename Der Parameter nimmt den Slug als Wert und nicht den Namen. Ich neige dazu, diese anstelle der ID zu verwenden, denn wenn ich zu einem späteren Zeitpunkt auf meinen Code zurückkomme, sind Slugs leichter zu identifizieren als IDs. Wenn Sie jedoch der Meinung sind, dass Ihre Site-Benutzer den Slug für eine oder mehrere Kategorien ändern könnten, empfehle ich die Verwendung der ID, um Probleme zu vermeiden.

Lassen Sie uns einen Blick darauf werfen, wie Sie diese verwenden.

Der Katzenparameter

Das Katze Parameter ist unkompliziert: Verwenden Sie einfach eine einzelne Kategorie-ID oder eine Zeichenfolge von Kategorie-IDs.

Das Abfragen für eine Kategorie sieht folgendermaßen aus:

$ args = array ('cat' => '12');

Die Abfrage nach mehreren Kategorien sieht folgendermaßen aus:

$ args = array ('cat' => '12, 13, 14 ');

Das Obige wird WordPress anweisen, Beiträge abzurufen, die sich in einer der aufgeführten Kategorien befinden. Wenn Sie Beiträge in allen Kategorien finden möchten, verwenden Sie die category_and Parameter, davon kurz.

Sie können den Parameter cat auch verwenden, um Beiträge zu finden, die sich in einer Kategorie befinden, jedoch nicht in einer anderen. Verwenden Sie dazu ein Minuszeichen vor der Kategorie-ID:

$ args = array ('cat' => '12, -13 ');

Das obige würde Beiträge in Kategorie abfragen 12 aber nicht in der Kategorie 13.

Der category_name-Parameter

Das Kategoriename Parameter verwendet die Kategorie Slug, nicht den Namen (verwirrend, ich weiß!). Sie können es wieder mit einer einzelnen Kategorie oder mit einer Reihe von Kategorien verwenden, um Beiträge zu finden, die sich in einer der Kategorien befinden.

Um Beiträge in einer einzigen Kategorie abzufragen, fügen Sie Folgendes hinzu:

$ args = array ('category_name' => 'my-slug');

Um Beiträge in einer oder mehreren Kategorien zu finden, verwenden Sie diese:

$ args = array ('category_name' => 'mein-slug, dein-slug, ein anderer-slug');

Wie beim cat-Parameter werden hier keine Beiträge gefunden, die in sind alles der Kategorien, aber es werden Beiträge in irgendein der Kategorien.

Die Kategorie und der Parameter

Wenn Sie nach Beiträgen suchen möchten, die sich in einem ganzen Array von Kategorien befinden, verwenden Sie diesen Parameter. Es nimmt die Kategorie-IDs für ihren Wert. Um Beiträge in allen drei Kategorien zu finden, würden Sie Folgendes verwenden:

$ args = array ('category__and' => array ('12', '13', '14'));

Beachten Sie, dass hier ein Array und keine Zeichenfolge verwendet wird, sodass Sie es anders codieren. Der Parameter hat zwei Unterstriche im Namen: Verwenden Sie nur einen, und es funktioniert nicht.

Die Kategorie__in Parameter

Der nächste Parameter sucht nach Beiträgen in einer oder mehreren Kategorien von Kategorien. Es funktioniert tatsächlich genauso wie der cat-Parameter und nimmt auch die Kategorie-ID als Wert an.

Um Beiträge in einer oder mehreren Kategorien von Kategorien abzufragen, würden Sie Folgendes verwenden:

$ args = array ('category__in' => array ('12', '13', '14'));

Das Obige würde Beiträge aus einer oder mehreren dieser Kategorien abrufen.

Der category__not_in-Parameter

Das category__not_in Der Parameter funktioniert wie erwartet: Er fragt Beiträge ab, die sich nicht in einer Kategorie oder einem Array von Kategorien befinden.

Um Posts aus einer Kategorie auszuschließen, würden Sie Folgendes verwenden:

$ args = array ('category__not_in' => '12');

Und um Beiträge aus einer Reihe von Kategorien auszuschließen:

$ args = array ('category__not_in' => array ('12', '13', '14'));

Dies würde Beiträge aus einer dieser Kategorien ausschließen.

Tag-Parameter

Tags haben etwas andere Parameter als Kategorien: Sie können nicht herausfinden, auf welche Weise Sie sich auf Ihr Wissen über Kategorienparameter stützen könnten, fürchte ich!

Die Tag-Parameter sind:

  • Etikett (Schnur): Verwenden Sie Tag Slug.
  • tag_id (int): Tag-ID verwenden.
  • tag__and (Array): Verwenden Sie Tag-IDs.
  • tag__in (Array): Verwenden Sie Tag-IDs.
  • tag__not_in (Array): Verwenden Sie Tag-IDs.
  • tag_slug__and (Array): Verwenden Sie Tag-Slugs.
  • tag_slug__in (Array): Verwenden Sie Tag-Slugs.

Lassen Sie uns jedes davon betrachten.

Der Tag-Parameter

Das Etikett Der Parameter nimmt den Tag-Slug als Wert und kann zum Suchen von Beiträgen mit einem Tag oder einem beliebigen String aus Tags verwendet werden.

So finden Sie Beiträge mit einem Tag, den Sie verwenden:

$ args = array ('tag' => 'mein-tag');

Um Beiträge mit Tags aus einem Array von Tags zu finden:

$ args = array ('tag' => 'mein Tag, Ihr Tag, ein anderes Tag');

Beachten Sie, dass die obigen Abfragen Beiträge mit enthalten irgendein der Tags im Array, nicht alle.

Der tag_id-Parameter

Das tag_id Der Parameter funktioniert ähnlich wie der Katze Parameter: Er nimmt die Tag-ID und kann mit einem einzelnen Tag oder mehreren Tags verwendet werden.

Um nach Beiträgen mit einem einzigen Tag zu suchen, verwenden Sie Folgendes:

$ args = array ('tag_id' => '21');

So finden Sie Beiträge mit einem oder mehreren Tags aus einer Folge von Tag-IDs:

$ args = array ('tag_id' => '21, 22, 23 ');

Sie können auch verwenden tag_id zum Ausschluss von Tags, entweder bei Verwendung einzelner Tags oder mehrerer Tags.

Um Posts mit Ausnahme der mit einem bestimmten Tag abzufragen, würden Sie Folgendes verwenden:

$ args = array ('tag_id' => '-21');

Um nach Posts mit einem von zwei Tags, aber ohne ein anderes Tag zu suchen, verwenden Sie Folgendes:

$ args = array ('tag_id' => '21, -22, 23 ');

Das obige wird also Beiträge mit einem oder beiden Tags abfragen 21 oder 23 aber nicht tag 22.

Der Tag__in Parameter

Mit diesem Parameter können Sie Beiträge mit einem oder mehreren Tags von Arrays finden. Es funktioniert genauso wie Etikett bei Verwendung mit einem Array:

$ args = array ('tag_in' => array ('21', '22', '23'));

Dadurch werden Beiträge mit einem oder allen aufgeführten Tags abgefragt. Wenn Sie Beiträge mit allen Tags suchen möchten, verwenden Sie tag__and, das werde ich gleich behandeln.

Der Tag__not_in Parameter

Das tag__not_in Mit diesem Parameter können Sie Beiträge abfragen, für die kein bestimmtes Tag oder Array von Tags vorhanden ist.

Verwenden Sie es wie folgt, um ein Tag auszuschließen:

$ args = array ('tag__not_in' => array ('21'));

Beachten Sie, dass Sie dennoch ein Array verwenden müssen, obwohl Sie nur ein Tag verwenden. Für weitere Tags verwenden Sie:

$ args = array ('tag__not_in' => array ('21', '22', '23'));

Dadurch werden Beiträge abgefragt, die keine der oben genannten Tags haben.

Die Parameter tag_slug__and und tag_slug__in

Diese beiden Parameter verhalten sich genauso wie die tag__and und tag__in Parameter, außer dass Sie diesen Tag-Slug in Ihren Arrays anstelle der Tag-ID verwenden.

Um beispielsweise Beiträge zu finden, die beide Tags enthalten, verwenden Sie sie tag__slug_in:

$ args = array ('tag_slug__in' => array ('mein-tag', 'dein-tag', 'ein anderes-tag'));

Hiermit werden Beiträge mit einem dieser Tags gefunden. Sie können den Tag-Parameter auch mit einer Folge von Tag-Slugs verwenden, um dasselbe Ergebnis zu erzielen.

Verwenden Sie, um Beiträge mit allen Tags zu enthalten tag_slug__and:

$ args = array ('tag_slug__and' => array ('mein-tag', 'dein-tag', 'ein anderes-tag'));

Anstatt Beiträge mit einem der Tags abzufragen, werden nur Beiträge mit diesem Schlüsselwort abgefragt alles der Tags.

Zusammenfassung

Beim Abfragen Ihrer Beiträge nach Kategorie und / oder Tag besteht eine gute Chance, dass Sie Gelegenheit dazu haben WP_Query. Wenn Sie die obigen Argumente verwenden und wenn nötig kombinieren, können Sie leistungsstarke Argumente erstellen, um genau die Daten zu extrahieren, die Sie aus der Datenbank benötigen.