Tot nu toe in deze serie heb je geleerd over een selectie van argumenten die je kunt gebruiken met de WP_Query
class, om berichten te selecteren op posttype, categorie, tag, metadata, datum, status en nog veel meer.
In deze laatste tutorial over WP_Query
argumenten, zal ik enkele minder vaak gebruikte parameters doornemen die uw vragen nog meer flexibiliteit kunnen geven.
De parameters die we hier behandelen zijn voor:
Voordat we beginnen, laten we een korte samenvatting geven van de manier waarop u uw argumenten codeert WP_Query
.
Wanneer je codeert WP_Query
in uw thema's of plug-ins moet u vier hoofdelementen opnemen:
In de praktijk zal dit er ongeveer zo uitzien:
have_posts ()) // Start het doorlopen van de queryresultaten. while ($ query-> have_posts ()) $ query-> the_post (); // Inhoud van de opgevraagde resultaten van de post ga hier naartoe. // Oorspronkelijke berichtgegevens herstellen. wp_reset_postdata (); ?>
De argumenten zijn wat WordPress vertelt welke gegevens moeten worden opgehaald uit de database en dat zijn de argumenten die ik hier zal behandelen. Dus het enige waar we ons op concentreren is het eerste deel van de code:
$ args = array (// Argumenten voor uw zoekopdracht.);
Zoals u kunt zien, zijn de argumenten in een array opgenomen. Tijdens deze tutorial leer je hoe je ze kunt coderen.
Er is een specifieke manier om de argumenten in de array te coderen, die als volgt is:
$ args = array ('parameter1' => 'waarde', 'parameter2' => 'waarde', 'parameter3' => 'waarde');
U moet de parameters en hun waarden tussen enkele aanhalingstekens plaatsen, gebruik =>
tussen hen, en scheid ze met een komma. Als u dit fout doet, voegt WordPress mogelijk niet al uw argumenten aan de query toe of krijgt u mogelijk een wit scherm.
Er zijn vier parameters die u kunt gebruiken om te zoeken op auteur:
schrijver
(int): gebruik auteurs-IDauteur naam
(draad): gebruik 'user_nicename' (NOT name)author__in
(rangschikking): gebruik auteurs-IDauthor__not_in
(rangschikking)De eerste, schrijver
, laat je berichten van een of meerdere auteurs opvragen door de ID van de auteur op te geven:
$ args = array ('auteur' => '2');
De bovenstaande code ondervraagt alle berichten van de auteur wiens ID is 2
.
U kunt ook een tekenreeks gebruiken om berichten van meer dan één auteur te doorzoeken:
$ args = array ('auteur' => '1, 2');
Als u op naam wilt zoeken, gebruikt u de auteur naam
parameter:
$ args = array ('author_name' => 'rachelmccollin');
Deze parameter neemt de waarde van de user_nicename
veld in de database als het argument, dat wordt weergegeven als de bijnaam in het scherm Gebruikersbeheer:
Let op: aangezien dit door gebruikers kan worden bewerkt, zult u veiliger zijn om de schrijver
parameter als u denkt dat uw gebruikers dit kunnen veranderen.
Je kunt ook zoeken naar berichten van een aantal auteurs:
$ args = array ('author__in' => array ('1', '2'));
Het bovenstaande zal vragen voor berichten van twee auteurs: die met ID 1
en 2
, geeft dezelfde resultaten als de reeks die ik gebruikte met de schrijver
parameter hierboven.
Ten slotte kunt u berichten van een of meer auteurs uitsluiten met behulp van de author__not_in
parameter. Het onderstaande argument bevat vragen voor alle berichten behalve die van de auteur 1
:
$ args = array ('author__not_in' => array ('1'));
Of u kunt meerdere auteurs uitsluiten:
$ args = array ('author__not_in' => array ('1', '2'));
Als alternatief kunt u de schrijver
parameter en gebruik een minteken voor de auteur ID om een auteur uit te sluiten:
$ args = array ('auteur' => '-2');
Er is slechts één parameter voor zoeken, namelijk s
. Gebruik het om te zoeken naar berichten die overeenkomen met een zoekterm. Dus om bijvoorbeeld te zoeken naar berichten met de trefwoorden 'mijn favoriete eten', zou je dit gebruiken:
$ args = array ('s' => 'mijn favoriete eten');
U vindt dit misschien handig om te zoeken naar gerelateerde berichten met vergelijkbare zoekwoorden, bijvoorbeeld.
U kunt de twee wachtwoordparameters gebruiken om berichten te zoeken met en zonder wachtwoordbeveiliging:
has_password
(bool)post_password
(draad)De eerste parameter, has_password
, laat je zoeken naar berichten met of zonder wachtwoordbeveiliging. Dus om te vragen naar berichten die met een wachtwoord zijn beveiligd:
$ args = array ('has_password' => true);
En voor berichten die geen wachtwoord hebben:
$ args = array ('has_password' => false);
U kunt ook zoeken op het wachtwoord zelf, met behulp van de post_password
parameter:
$ args = array ('post_password' => 'mypassword');
Er is slechts één parameter beschikbaar voor machtigingen, permanent
, die u gebruikt om berichten te zoeken die de huidige gebruiker mag lezen. Het kost de 'leesbaar'
waarde en is ontworpen om te worden gecombineerd met andere argumenten.
Dus om berichten met wachtwoordbeveiliging op te vragen en ze alleen weer te geven als de gebruiker over de juiste machtigingen beschikt, zou u dit gebruiken:
$ args = array ('has_password' => true, 'perm' => 'leesbaar');
Of om conceptberichten te bekijken als de huidige gebruiker toestemming heeft om ze te bekijken, zou je dit gebruiken:
$ args = array ('post_status' => 'concept', 'perm' => 'leesbaar');
Er zijn drie caching-parameters, die voorkomen dat de door de query opgehaalde gegevens aan de cache worden toegevoegd:
cache_results
(boolean): informatiecache plaatsenupdate_post_meta_cache
(boolean): post meta-informatiecacheupdate_post_term_cache
(boolean): informatiecache na afloop van de termijnDe standaardwaarde van alle drie is waar
: u hoeft ze niet te gebruiken als u wilt dat de gegevens aan de cache worden toegevoegd.
Dus om alle berichten van de artikel
berichttype, maar voeg geen postinformatie toe aan de cache, u zou dit gebruiken:
$ args = array ('post_type' => 'product', 'cache_results' => false);
Normaal gesproken zou u deze parameters niet moeten gebruiken, omdat het een goede gewoonte is om postgegevens aan de cache toe te voegen. U wilt echter soms berichten ophalen, zodat u slechts enkele postgegevens kunt gebruiken. In dat geval heeft u de rest van de postgegevens in de cache niet nodig. Een voorbeeld kan zijn wanneer u gewoon een lijst met posttitels wilt uitvoeren met koppelingen, in welk geval u geen gegevens of metagegevens nodig heeft om aan de cache te worden toegevoegd:
$ args = array ('post_type' => 'product', 'update_post_meta_cache' => false, 'update_post_term_cache' => false);
U kunt de velden
parameter om op te geven welke velden moeten worden geretourneerd uit uw query. Hiermee kunt u terugkerende gegevens uit velden in de database opslaan die u niet nodig hebt bij het uitvoeren van de gegevens in uw lus.
De standaard is om alle velden terug te zetten, maar je hebt twee opties met de velden
parameter om dit te beperken. Eerst de 'Ids'
argument:
$ args = array ('fields' => 'id's');
Dit zou alleen een reeks post-ID's en geen andere velden retourneren. Als je iets in je loop zou willen uitvoeren (zoals de titel van het bericht), zou je dan functies zoals moeten gebruiken get_the_title ($ post-> ID);
om de titel uit te voeren, wat een langdradige manier zou zijn om dingen te gaan doen.
Het andere argument dat u kunt gebruiken, haalt een associatieve array van post-ID's met onderliggende post-ID's op:
$ args = array ('fields' => 'id => parent');
Je zou dit gebruiken om naar berichten te zoeken op basis van je andere argumenten plus hun kinderen.
Dit deel van de serie is aan WP_Query
introduceert de laatste reeks parameters voor de WP_Query
klasse. U kunt deze gebruiken om berichten te zoeken op auteur, wachtwoordbeveiligde status of het wachtwoord zelf en zoektermen, en om in te stellen of de resultaten van de query aan de cache worden toegevoegd en welke velden worden geretourneerd door de query.
In het volgende deel van deze serie ziet u enkele uitgewerkte voorbeelden van gebruiken WP_Query
in uw thema's of plug-ins.