Bisher haben Sie in dieser Serie etwas über eine Auswahl von Argumenten erfahren, die Sie mit verwenden können WP_Query
Klasse, um Beiträge nach Beitragstyp, Kategorie, Tag, Metadaten, Datum, Status und vielem mehr auszuwählen.
In diesem abschließenden Tutorial auf WP_Query
Argumente, ich werde einige weniger häufig verwendete Parameter durchlaufen, die Ihren Abfragen noch mehr Flexibilität geben.
Die Parameter, die wir hier behandeln werden, sind für:
Bevor wir beginnen, lassen Sie uns kurz beschreiben, wie Sie Ihre Argumente mit codieren WP_Query
.
Wenn du codierst WP_Query
In Ihren Designs oder Plugins müssen Sie vier Hauptelemente einfügen:
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.
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.
Es gibt vier Parameter, die Sie zur Abfrage nach Autor verwenden können:
Autor
(int): Verwenden Sie die ID des AutorsAutorenname
(Schnur): benutze 'user_nicename' (NICHT name)author__in
(Array): Verwenden Sie die ID des Autorsauthor__not_in
(Array)Der erste, Autor
, können Sie Beiträge von einem oder mehreren Autoren abfragen, indem Sie die ID des Autors angeben:
$ args = array ('author' => '2');
Der obige Code fragt alle Beiträge des Autors ab, deren ID lautet 2
.
Sie können auch eine Zeichenfolge verwenden, um Beiträge von mehreren Autoren abzufragen:
$ args = array ('author' => '1, 2');
Wenn Sie nach Name abfragen möchten, verwenden Sie die Autorenname
Parameter:
$ args = array ('author_name' => 'rachelmccollin');
Dieser Parameter übernimmt den Wert aus der benutzername_name
Feld in der Datenbank als Argument, das als Spitzname auf dem Benutzeradministrationsbildschirm angezeigt wird:
Beachten Sie, dass die Verwendung von das sicherer ist, da dies von Benutzern bearbeitet werden kann Autor
Parameter, wenn Sie glauben, dass Ihre Benutzer dies ändern könnten.
Sie können auch nach Beiträgen nach einem Array von Autoren suchen:
$ args = array ('author__in' => array ('1', '2'));
Im obigen Abschnitt werden Beiträge von zwei Autoren abgefragt: mit ID 1
und 2
, Sie erhalten dieselben Ergebnisse wie die Zeichenfolge, die ich mit der Autor
Parameter oben.
Schließlich können Sie Beiträge von einem oder mehreren Autoren mit der Option ausschließen author__not_in
Parameter. Das folgende Argument fragt nach allen Beiträgen außer den nach Autor 1
:
$ args = array ('author__not_in' => array ('1'));
Oder Sie können mehrere Autoren ausschließen:
$ args = array ('author__not_in' => array ('1', '2'));
Alternativ können Sie das verwenden Autor
Parameter und verwenden Sie ein Minuszeichen vor der Autor-ID, um einen Autor auszuschließen:
$ args = array ('author' => '-2');
Es gibt nur einen Parameter für die Suche s
. Verwenden Sie diese Option, um nach Beiträgen zu suchen, die einem Suchbegriff entsprechen. Um beispielsweise nach Beiträgen mit den Schlüsselwörtern "Mein Lieblingsessen" abzufragen, verwenden Sie Folgendes:
$ args = array ('s' => 'mein Lieblingsessen');
Dies kann nützlich sein, um beispielsweise nach ähnlichen Beiträgen mit ähnlichen Suchbegriffen zu suchen.
Sie können die beiden Kennwortparameter verwenden, um Beiträge mit und ohne Kennwortschutz abzufragen:
has_password
(bool)post_password
(Schnur)Der erste Parameter, has_password
, können Sie nach Beiträgen mit oder ohne Kennwortschutz suchen. So fragen Sie nach Beiträgen, die durch ein Passwort geschützt sind:
$ args = array ('has_password' => true);
Und für Beiträge, die kein Passwort haben:
$ args = array ('has_password' => false);
Sie können auch das Kennwort selbst abfragen post_password
Parameter:
$ args = array ('post_password' => 'mypassword');
Für Berechtigungen steht nur ein Parameter zur Verfügung, Dauerwelle
, die Sie verwenden, um Beiträge abzufragen, für die der aktuelle Benutzer Leserechte besitzt. Es braucht die 'lesbar'
Wert und soll mit anderen Argumenten kombiniert werden.
Um kennwortgeschützte Beiträge abzufragen und sie nur anzuzeigen, wenn der Benutzer über die entsprechenden Berechtigungen verfügt, verwenden Sie Folgendes:
$ args = array ('has_password' => true, 'perm' => 'lesbar');
Oder um Entwürfe anzuzeigen, wenn der aktuelle Benutzer die Berechtigung hat, sie anzuzeigen, verwenden Sie Folgendes:
$ args = array ('post_status' => 'draft', 'perm' => 'lesbar');
Es gibt drei Caching-Parameter, die verhindern, dass die von der Abfrage abgerufenen Daten zum Cache hinzugefügt werden:
cache_results
(boolean): Cache nach Informationenupdate_post_meta_cache
(boolean): post meta information cacheupdate_post_term_cache
(boolean): Post-Term-Information-CacheDer Standardwert aller drei ist wahr
: Sie müssen sie nicht verwenden, wenn die Daten zum Cache hinzugefügt werden sollen.
Also alle Beiträge der anzeigen Produkt
Post-Typ, aber keine Post-Informationen zum Cache hinzufügen, verwenden Sie Folgendes:
$ args = array ('post_type' => 'product', 'cache_results' => false);
Normalerweise sollten Sie diese Parameter nicht verwenden, da es sich als üblich erweist, Postdaten zum Cache hinzuzufügen. Manchmal möchten Sie jedoch möglicherweise Beiträge abrufen, sodass Sie nur einige der Postdaten verwenden können. In diesem Fall benötigen Sie die restlichen Postdaten nicht im Cache. Ein Beispiel könnte sein, wenn Sie einfach eine Liste mit Posttiteln mit Links ausgeben möchten. In diesem Fall müssen Sie keine Posttermdaten oder Metadaten zum Cache hinzufügen:
$ args = array ('post_type' => 'product', 'update_post_meta_cache' => false, 'update_post_term_cache' => false);
Du kannst den ... benutzen Felder
Parameter, um anzugeben, welche Felder von Ihrer Abfrage zurückgegeben werden sollen. Dadurch können zurückgegebene Daten aus Feldern in der Datenbank gespeichert werden, die Sie nicht zur Ausgabe der Daten in Ihrer Schleife benötigen.
Standardmäßig werden alle Felder zurückgegeben. Mit der Option haben Sie zwei Optionen Felder
Parameter, um dies einzuschränken. Zuerst die 'ids'
Streit:
$ args = array ('fields' => 'ids');
Dies würde nur ein Array von Post-IDs und keine anderen Felder zurückgeben. Wenn Sie etwas in Ihrer Schleife ausgeben möchten (z. B. den Beitragstitel), müssen Sie Funktionen wie verwenden get_the_title ($ post-> ID);
den Titel auszugeben, was ein langwieriger Weg wäre, Dinge zu erledigen.
Das andere Argument, das Sie verwenden können, ruft ein assoziatives Array von Post-IDs mit untergeordneten Post-IDs ab:
$ args = array ('fields' => 'id => parent');
Sie würden dies verwenden, um nach Beiträgen nach Ihren anderen Argumenten und deren untergeordneten Elementen abzufragen.
Dieser Teil der Serie ist am WP_Query
führt den endgültigen Parametersatz für die WP_Query
Klasse. Sie können diese verwenden, um Beiträge nach Autor, kennwortgeschütztem Status oder dem Kennwort selbst und Suchbegriffen abzufragen und festzulegen, ob die Ergebnisse der Abfrage zum Cache hinzugefügt werden und welche Felder von der Abfrage zurückgegeben werden.
Im nächsten Teil dieser Serie sehen Sie einige erarbeitete Anwendungsbeispiele WP_Query
in Ihren Themen oder Plugins.