Als je deze serie hebt gevolgd, begrijp je hoe WP_Query
is gestructureerd en hoe u het gebruikt om aangepaste query's te schrijven. Om te kunnen definiëren wat WP_Query
Ophalen uit de database, u moet weten welke argumenten u kunt gebruiken om gegevens op te vragen.
WP_Query
heeft een groot aantal mogelijke argumenten, waardoor het extreem flexibel is. Omdat je het kunt gebruiken om alles wat je in je bezit op te vragen wp_posts
tabel, het heeft argumenten voor elke permutatie van de query die u misschien wilt uitvoeren op uw inhoud.
In deze zelfstudie zal ik de argumenten voor aangepaste velden bekijken. Maar eerst een korte samenvatting van de manier waarop u argumenten codeert WP_Query
.
Laten we, voordat we beginnen, een korte samenvatting geven van de manier waarop argumenten werken WP_Query
. Wanneer je codeert WP_Query
in uw thema's of plug-ins moet u vier hoofdelementen opnemen:
als
en terwijl
tags en het resetten van postgegevensIn 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 vertellen WordPress welke gegevens moeten worden opgehaald uit de database en dat zijn de gegevens 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.
Aangepaste velden, ook wel post-metagegevens genoemd, kunnen een afzonderlijke klasse gebruiken WP_Meta_Query
. Dit betekent dat als u een zoekopdracht wilt uitvoeren alleen voor postmetagegevens, u een van beide kunt gebruiken WP_Meta_Query
of WP_Query
(die toegang krijgt WP_Meta_Query
), terwijl u als u wilt zoeken naar metagegevens van post en andere items zoals het posttype, gebruikt WP_Query
.
De WP_Meta_Query
klasse is elders in deze serie uitgebreid behandeld, dus hier zal ik hier niet in detail op in gaan, maar het belangrijkste verschil tussen het gebruik van en WP_Query
is dat WP_Query
kunt u enkele eenvoudige argumenten maken zonder geneste matrices te gebruiken.
De belangrijkste parameters voor het gebruik WP_Query
om aangepaste velden op te vragen zijn als volgt:
meta_key
(draad): Aangepaste veldsleutel.meta_value
(draad): Aangepaste veldwaarde.meta_value_num
(aantal): Aangepaste veldwaarde.meta_compare
(draad): Operator om het te testen 'Meta_value'
. Mogelijke waarden zijn '='
, '! ='
, '>'
, '> ='
, '<'
, '<='
, 'NET ZOALS'
, 'NIET ZOALS'
, 'IN'
, 'NIET IN'
, 'TUSSEN'
, 'NIET TUSSEN'
, 'BESTAAT NIET'
, 'REGEXP'
, 'NIET REGEXP'
of 'RLIKE'
. Standaardwaarde is '='
.Gebruik deze parameters voor een eenvoudige aangepaste veldquery. Dus bijvoorbeeld om berichten uit te voeren die een aangepast veld hebben met de sleutel key1
(ongeacht de waarde), gebruikt u dit argument:
$ args = array ('meta_key' => 'key1');
Dit zou alle berichten met een aangepast veld retourneren met de key1
sleutel, ongeacht de waarde.
Als u een waarde wilt opgeven, voegt u daarvoor een extra argument toe:
$ args = array ('meta_key' => 'key1', 'meta_value' => 'value1');
Dit zou alle berichten met een aangepast veld retourneren met de key1
sleutel en de value1
waarde voor het.
Je kunt ook alle berichten met een aangepast veld met de waarde ophalen value1
, ongeacht de sleutel. Dit kan handig zijn wanneer u meerdere aangepaste veldtoetsen hebt met dubbele waarden:
$ args = array ('meta_value' => 'value1');
U kunt dus, zoals u kunt zien, zoeken naar alleen de sleutel of waarde van het aangepaste veld, u hoeft niet altijd beide op te geven.
U hebt misschien gemerkt dat er veel potentiële parameters zijn voor de meta_compare
argument, en het gebruik ervan is niet altijd meteen duidelijk. Laten we eens kijken naar degene die u mogelijk het meest gebruikt:
=
: Is gelijk aan. Dit is de standaard, dus als u geen a meta_compare
argument, dit is wat WP_Query zal gebruiken.!+
: Is niet gelijk aan.>
: Groter dan.> =
: Groter dan of gelijk aan.<
: Minder dan.<=
: Minder dan of gelijk aan.NET ZOALS
: Dit negeert het geval van de waarde die u gebruikt en u kunt het ook gebruiken met jokertekens om waarden te vinden zoals de waarde waarnaar u op zoek bent.NIET ZOALS
: Werkt op dezelfde manier als LIKE maar vraagt het tegenovergestelde!IN
: Gebruik dit met een array in het argument 'value' om berichten te zoeken met een of meer van de waarden in de array.TUSSEN
: Gebruik met een array van twee numerieke waarden (opgegeven in de meta_value
argument) om berichten te vinden met een aangepaste veldwaarde tussen deze waarden (maar niet gelijk aan).NIET TUSSEN
: Query's met aangepaste veldwaarden buiten een array van twee numerieke waarden opgegeven door de meta_value
argument.Laten we een paar voorbeeldgebruiken van dit argument bekijken.
Ten eerste kunt u aangepaste veldsleutels of waarden uitsluiten met behulp van de meta_compare
argument. Dus om alle berichten op te halen, behalve die met een aangepast veld met de key1
sleutel, zou je dit gebruiken:
$ args = array ('meta_key' => 'key1', 'meta_compare' => '! =');
Je zou ook de 'NIET IN'
waarde voor de meta_compare
argument, dat ook kan worden gebruikt met een reeks meerdere waarden:
$ args = array ('meta_key' => 'key1, key2', 'meta_compare' => 'NOT IN');
Hiermee worden berichten opgevraagd die geen aangepaste velden hebben met de key1
of key2
waarden. Als u specifieker wilt zijn, misschien op zoek naar berichten met een aangepast veld en niet met een ander, gebruikt u een geneste array, die we binnenkort zullen zien.
De bovenstaande voorbeelden gebruiken niet-numerieke waarden. Je kunt gebruiken WP_Query
met aangepaste velden met numerieke waarden, niet alleen om berichten met een aangepast veld met die waarde op te halen, maar ook om berichten met aangepaste velden met hogere of lagere waarden op te halen. U kunt dit bijvoorbeeld in een winkel gebruiken als u items boven of onder een bepaalde prijs zoekt.
Gebruik zoiets om berichten te vinden met een aangepaste veldwaarde boven een bepaald getal:
$ args = array ('meta_key' => 'numkey', 'meta_value' => '100', 'meta_compare' => '>');
Dit zou alle berichten met een aangepast veld retourneren met de numkey
sleutel en een waarde van meer dan 100
. Als u wilt vragen om waarden van 100 of ouder, zou u gebruiken 'meta_compare' => '> ='
.
U kunt ook berichten vinden waarvan de aangepaste velden waarden hebben tussen twee nummers die u opgeeft met behulp van de TUSSEN
argument en een array:
$ args = array ('meta_key' => 'numkey', 'meta_value' => array ('100', '200'), 'meta_compare' => 'BETWEEN');
Dit zou alle berichten vinden met een waarde in de numkey
aangepast veld tussen 100 en 200.
Als u naar meer dan één aangepast veld wilt zoeken of meer dan één operator wilt gebruiken, kunt u een geneste array gebruiken.
Deze nemen de volgende structuur:
$ args = array ('meta_query' => array ('relation' => ", // Optioneel argument. array (// 'meta_query'-argumenten gaan hier.)));
De manier waarop je het 'Meta_query'
argument in WP_Query
is precies hetzelfde als hoe u het gebruikt met de WP_Meta_Query
klasse, die in een latere tutorial in deze serie wordt behandeld, dus ik zal hier niet dupliceren.
Sinds WordPress versie 4.1 kunt u ook meerdere niveaus van geneste array gebruiken om steeds complexere en nauwkeurigere query's te maken. Deze zien er ongeveer zo uit:
$ args = array ('meta_query' => array ('relation' => ", // Optioneel argument. array ('relation' =>", array (// eerste reeks 'meta_query'-argumenten hier). array (// Tweede reeks 'metaquery'-argumenten hier.))));
Hiermee kunt u verschillende relaties op verschillende niveaus in uw query gebruiken, bijvoorbeeld query's voor berichten met een waarde in één aangepaste veldsleutel of met beide van twee waarden in een andere aangepaste veldsleutel. Dit wordt in meer detail behandeld, met voorbeelden, in de tutorial over de WP_Meta_Query
klasse, die deel uitmaakt van deze serie.
De ... gebruiken WP_Query
klasse om de metadata van uw berichten te doorzoeken (of aangepaste velden) geeft u veel flexibiliteit, met meerdere potentiële argumenten in combinatie met een aantal operatoren om u te helpen uw database te ondervragen op de manier zoals u dat wilt.
Als u alleen argumenten voor metagegevens voor berichten in uw query wilt gebruiken (en niet combineren met andere argumenten, bijvoorbeeld voor berichttypen), kunt u ook de WP_Meta_Query
klasse, die later in deze serie wordt besproken.