So rufen Sie mit WP_Query jeden gewünschten Beitrag ab

So rufen Sie mit WP_Query jeden gewünschten Beitrag ab

So rufen Sie mit WP_Query jeden gewünschten Beitrag ab
СОДЕРЖАНИЕ
02 июня 2020

Wenn Sie in der Vergangenheit einfache Themen erstellt haben, besteht die Möglichkeit, dass Sie keine eigenen Beiträge abrufen müssen. Immerhin lädt WordPress die letzten 10 Beiträge auf der Hauptseite und die richtigen Beiträge auf Archivseiten. Was ist mit komplexeren Szenarien? Was ist, wenn Sie eine Art Sitemap möchten und alle Ihre Beiträge auflisten möchten? und Seiten nach Datum sortiert?


WP_Query ist dein Freund, mit dem du Beiträge nach deinen Kriterien aus der Datenbank ziehen kannst. Sie können alle Beiträge einer einzelnen Kategorie abrufen, die auch bestimmte Tags enthalten. Sie können alle im letzten Jahr erstellten Seiten und Beiträge abrufen, für die kein Bild angezeigt wird.

In diesem Beitrag werde ich Ihnen einen detaillierten Einblick in die Funktionsweise von WP_Query geben!

Eine benutzerdefinierte Schleife

Der Schlüssel für eine gute Arbeit mit benutzerdefinierten Abfragen liegt darin, die Argumente zu beherrschen, die Sie an sie übergeben können. Bevor wir uns das ansehen, erstellen wir eine kurze Beschreibung "Skelett" Wir können verwenden, um Beiträge aufzulisten. Die Schleife auf einer regulären Archivseite würde ungefähr so ​​aussehen:

<?php if (have_posts ()): ?>
<?php while (have_posts ()): the_post () ?>

<?PHP währenddessen ?>
<?PHP sonst: ?>

<?PHP Endif ?>

Dies funktioniert einwandfrei, da WordPress vor dem Laden der Seite bereits die richtigen Beiträge abgerufen hat. Wenn wir eine benutzerdefinierte Abfrage schreiben, benötigen wir eine benutzerdefinierte Schleife. Der Code ist sehr ähnlich, hier geht’s:

<?php
$ args = array (
‘post_type’ => ‘Post’,
‘post_status’ => ‘Zukunft’
);
$ Scheduled = New WP_Query ($ Args);

if ($ geplant->have_posts ()):
?>
<?PHP während ($ geplant->have_posts ()): $ geplant->die Post() ?>

<?PHP währenddessen ?>
<?PHP sonst: ?>

<?PHP Endif ?>

Wir erstellen eine neue WordPress-Abfrage mit der WP_Query-Klasse und übergeben ihr Parameter, um die Arten von Posts anzugeben, die wir benötigen. Wir rufen dann die Methoden have_posts () und the_post () für unser $ Scheduled-Objekt auf.

Wenn Sie mit objektorientierter Programmierung noch nicht vertraut sind und nicht wirklich verstehen, warum, keine Sorge, können Sie dennoch problemlos benutzerdefinierte Abfragen verwenden. Wir werden uns im gesamten Beitrag auf das Array $ args konzentrieren, was ziemlich einfach sein wird.

Einfache Argumente

Wie ich schon sagte, die Hauptsache "Wissensbestand" Wenn es um WP_Query geht, liegt es in seinen Argumenten. Das Kodex listet alle auf, wir werden uns hier die nützlichsten ansehen.

Einige Argumente sind ziemlich einfach, wie z. B. der Parameter tag oder tag_id. Ersteres nimmt einen Tag-Slug, letzteres eine Tag-ID. Sie können auch mehrere Elemente durch Kommas trennen oder negative IDs verwenden, um anzugeben, dass Sie Beiträge abrufen möchten, die dies tun nicht Habe dieses spezielle Tag angehängt.

$ args = array (
‘post_type’ => ‘Post’,
‘tag_id’ => ’22, 92,44, -21 ‘
);
$ our_posts = new WP_Query ($ args);

Das Snippet würde Artikel abrufen, an die eines der ersten drei Tags angehängt ist, nicht jedoch das vierte. Obwohl dieses System für einfache Anforderungen leistungsfähig genug ist, verwende ich normalerweise die weitaus flexiblere Taxonomie-Abfrage, auf die ich später noch eingehen werde.

Der Autor, Autorenname, Katze, Kategoriename, s (für Suchbegriffe), Poststatus, Posttyp sind Beispiele für einige einfachere Felder. Beachten Sie, dass Sie in einigen Feldern wie post_status ein Array von Status übergeben müssen, wenn Sie mehrere Werte verwenden möchten.

$ args = array (
‘post_type’ => Array (‘Post’, ‘Seite’),
‘post_status’ => Array (‘Entwurf’, ‘Veröffentlichen’),
‘cat’ => ‘Musikvideos’
);
$ our_posts = new WP_Query ($ args);

Im obigen Beispiel werden alle Beiträge abgerufen, die entweder Seiten oder Beiträge sind. sind entweder veröffentlicht oder im Entwurfsstatus und haben entweder die Musik- oder Videokategorie zugewiesen. Dies kann zum Anzeigen der Titel aktueller oder geplanter Inhalte in Bezug auf Musik oder Videos verwendet werden.

Taxonomie-Abfragen

Für einfache Dinge reicht es aus, die genannten Argumente zum Abrufen von Posts basierend auf Kategorien oder Tags zu verwenden. Was ist jedoch, wenn Sie eine benutzerdefinierte Taxonomie haben oder mehrere Parameter kombinieren müssen? Die Antwort liegt im Argument tax_query, das selbst ein Array ist. Schauen wir uns zuerst ein Beispiel an.

$ args = array (
‘post_type’ => ‘Buch’,
‘tax_query’ => Array (
Array (
‘Taxonomie’ => ‘Genre’,
‘Feld’ => “Schnecke”,
‘Begriffe’ => Array (‘Scifi’, ‘Thriller’),
‘operator’ => ‘NICHT IN’,
),
Array (
‘Taxonomie’ => ‘Autor’,
‘Feld’ => ‘Ich würde’,
‘Begriffe’ => Array (92, 883, 399),
),
‘Beziehung’ => ‘UND’,
),
);
$ query = new WP_Query ($ args);

Hier rufen wir einige Beiträge aus unserem Beitragstyp “Buch” ab und fügen einige Taxonomieparameter hinzu. Unter Verwendung von zwei Arrays, die in der tax_query definiert sind, haben wir angegeben, dass wir Bücher abrufen möchten, die von den Autoren 92, 883 oder 399 geschrieben wurden nicht im Science-Fiction- oder Thriller-Genre. Der Beziehungsparameter definiert die Beziehung zwischen den beiden Arrays. In unserem Fall handelt es sich um ein „und“, was bedeutet, dass beide Bedingungen erfüllt sein müssen.

Wenn wir “oder” verwendet hätten, hätten wir Bücher abgerufen, die entweder nicht zur Kategorie “Science-Fiction” oder “Thriller” gehören oder von den angegebenen drei Autoren geschrieben wurden. Im Klartext bedeutet dies: Ich möchte alle meine Bücher außer dem Science-Fiction- und Thriller-Genre sehen. Ich möchte jedoch alle Bücher von Terry Pratchett, Douglas Adams und Stephen King sehen, unabhängig vom Genre.

Meta-Abfragen

Metaabfragen sind in ihrer Struktur Taxonomie-Abfragen sehr ähnlich, verwenden jedoch Daten aus der Post-Meta-Tabelle, um Posts zu filtern. Der folgende Code zeigt alle veröffentlichten Beiträge mit einem vorgestellten Bild an.

$ args = array (
‘post_type’ => ‘Post’,
‘meta_query’ => Array (
Array (
‘Schlüssel’ => ‘_thumbnail_id’,
‘Wert’ => ”,
‘vergleiche’ => ‘! =’,
),
),
);
$ query = new WP_Query ($ args);

WordPress speichert die ID des vorgestellten Bildes für einen Beitrag im Feld _thumbnail_id. Wenn wir also alle Beiträge abrufen, bei denen dieser Metawert nicht leer ist, sollten wir alle Beiträge mit einem vorgestellten Bild erhalten.

Das Geheimnis hier ist, zu wissen, wie man die Eigenschaft und den Typ compare verwendet. Sie können eine Vielzahl von Werten verwenden, die aus SQL bekannt sein sollten: “=”, “! =”, “>’,’>= ’,’<‘,’<= ‘,’ LIKE ‘,’ NOT LIKE ‘,’ IN ‘,’ NOT IN ‘,’ ZWISCHEN ‘,’ NICHT ZWISCHEN ‘,’ EXISTS ‘(ab WordPress 3.5) und’ NOT EXISTS ‘(ab WordPress 3.5) und auf)

Die type-Eigenschaft ist normalerweise wichtig, wenn Sie Zahlen oder Daten vergleichen möchten. Mögliche Werte sind “NUMERIC”, “BINARY”, “CHAR”, “DATE”, “DATETIME”, “DECIMAL”, “SIGNED”, “TIME”, “UNSIGNED”. Denken Sie daran, NUMERIC zu verwenden, wenn Sie Zahlen vergleichen. In den meisten anderen Fällen sollte es Ihnen gut gehen.

Genau wie bei Taxonomie-Abfragen können Sie mehrere Anforderungen stapeln und dann mithilfe des Beziehungsparameters die Beziehung zwischen ihnen angeben.

$ args = array (
‘post_type’ => ‘Post’,
‘meta_query’ => Array (
‘Beziehung’ => ‘ODER’,
Array (
‘Schlüssel’ => ‘Stimmung’,
‘Wert’ => Array (‘glücklich’, ‘fantastisch’),
‘vergleiche’ => ‘IM’,
),
Array (
‘Schlüssel’ => ‘Einkommen’,
‘Wert’ => 500,
‘vergleiche’ => ‘>’,
‘Typ’ => ‘NUMERISCH’
),
),
);
$ query = new WP_Query ($ args);

Das obige Beispiel würde Beiträge aus einem hypothetischen Tagebuch anzeigen, in denen etwas Gutes passiert ist. Ich fühlte mich entweder glücklich oder großartig oder ich verdiente an diesem Tag mehr als 500 Dollar.

Datumsparameter

Termine können etwas komplex werden, sind aber sehr flexibel. Das WP_Query-Dokumentation hat viele Beispiele, wenn Sie weitere Informationen benötigen.

Das Abrufen von Posts aus einer bestimmten Zeit ist ziemlich einfach. Sie können das Jahr, den Monat, w (Woche des Jahres), den Tag und einige andere Parameter verwenden, um eine Zeit anzugeben. Mit dem folgenden Code werden alle Beiträge aus dem März 2013 abgerufen.

$ args = array (
‘post_type’ => ‘Post’,
‘Jahr’ => 2013,
‘Monat’ => 3
);
$ query = new WP_Query ($ args);

Wenn Sie in komplexere Zeitbereiche gelangen möchten, müssen Sie date_query verwenden. Auf diese Weise können Sie ganz einfach beliebige Bereiche mit einem bekannten Array-Format angeben. Das folgende Beispiel – mit freundlicher Genehmigung des Codex – zeigt, wie Sie Beiträge abrufen können, die an Wochentagen zwischen 9.00 und 17.00 Uhr geschrieben wurden.

$ args = array (
‘post_type’ => ‘Post’,
‘date_query’ => Array (
Array (
‘Stunde’ => 9,
‘vergleiche’ => ‘>= ‘,
),
Array (
‘Stunde’ => 17,
‘vergleiche’ => ‘<= ‘,
),
Array (
‘dayofweek’ => Array (2, 6),
‘vergleiche’ => ‘ZWISCHEN’,
),
),
);
$ query = new WP_Query ($ args);

Bestellergebnisse

Die Reihenfolge, in der eine Liste angezeigt wird, ist genauso wichtig wie die darin enthaltenen Elemente. Zum Glück bietet uns WordPress die Parameter order_by und order an. Der Bestellparameter ist ziemlich einfach. Sie können ASC oder DESC verwenden, um aufsteigend oder absteigend zu ordnen.

Der Parameter order_by kann eine Reihe von Werten annehmen: ‘keine’, ‘ID’, ‘Autor’, ‘Titel’, ‘Name’, ‘Typ’, ‘Datum’, ‘geändert’, ‘Eltern’, ‘Rand’ , ‘comment_count’, ‘menu_order’, ‘meta_value’, ‘meta_value_num’, ‘post__in’. Die Bestellung nach meta_value kann besonders nützlich sein. Vergessen Sie in diesem Fall nicht, auch das Feld meta_key anzugeben.

$ args = array (
‘post_type’ => ‘Gemälde’,
‘meta_query’ => Array (
Array (
‘Schlüssel’ => ‘Preis’,
‘Wert’ => 50000,
‘vergleiche’ => ‘>’,
‘Typ’ => ‘NUMERISCH’
),
),
‘order_by’ => ‘meta_value_num’,
‘meta_key’ => ‘Preis’
);
$ query = new WP_Query ($ args);

In diesem Beispiel werden Gemälde mit einem Wert von über 50.000 US-Dollar abgerufen und nach Preis aufsteigend bestellt. Da der Preis als Zahl gespeichert ist, habe ich meta_value_num verwendet, um die Ergebnisse zu ordnen, im Gegensatz zu meta_value, das für Zeichenfolgen verwendet wird.

Eine weitere erwähnenswerte Bestellung ist post__in. Dieses post__in ist ein eigenständiger Parameter. Sie können ein Array von abzurufenden post-IDs angeben. Standardmäßig ordnet WordPress Posts nach Datum. Die in post__in angegebene Reihenfolge wird nicht beibehalten. Wenn Sie post__in auch als Reihenfolge nach Wert verwenden, behält WordPress die Reihenfolge bei.

$ args = array (
‘post_type’ => ‘Post’,
‘post__in’ => Array (23, 441, 12, 322, 34, 33),
‘order_by’ => ‘post__in’,
);
$ query = new WP_Query ($ args);

Einpacken

Ich hoffe, aus dieser Einführung in WP_Query geht hervor, dass dies tatsächlich eine mächtige Klasse ist. Sie können Beiträge nach Ihren eigenen Kriterien auf WP-Standard-Weise abrufen. Schauen Sie sich das an Dokumentation Für weitere Informationen und einige großartige Eigenschaften und Methoden bietet diese Klasse die Möglichkeit, die Abfrage und die Schleife zu bearbeiten.

WP_Query ist Teil dessen, was WordPress zu einem großartigen allgemeinen CMS macht – der Fähigkeit, Objekte modular und anpassbar aus der Datenbank abzurufen.

Wenn Sie Fragen haben, lassen Sie es uns in den Kommentaren wissen!

Jeffrey Wilson Administrator
Sorry! The Author has not filled his profile.
follow me
    Это интересно
    Adblock
    detector