WP_Query-argumenten categorieën en tags

In de eerdere delen van deze serie, heb je geleerd hoe WP_Query is gestructureerd en wat zijn eigenschappen en methoden zijn. De volgende fase is om de verschillende argumenten die u ermee kunt gebruiken te begrijpen en hoe u dit het beste kunt doen.

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 twee soorten argumenten bekijken voor het volgende:

  • categorieën
  • labels

De argumenten voor deze twee taxonomieën zijn vergelijkbaar, maar er zijn enkele verschillen die u moet weten als u ze effectief gaat gebruiken.

Een samenvatting van hoe argumenten werken in 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:

  • de argumenten voor de query, met behulp van parameters die in deze zelfstudie worden behandeld
  • de vraag zelf
  • de lus
  • afwerken: post-gegevens opnieuw instellen

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.

Codering van uw argumenten

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.

Categorieparameters

Laten we beginnen met categorieparameters. De opties die je hier hebt zijn als volgt:

  • kat (int): gebruik categorie-ID.
  • categorie naam(draad): gebruik categorie slug (NIET naam).
  • category__and (rangschikking): gebruik categorie-ID.
  • category__in (rangschikking): gebruik categorie-ID.
  • category__not_in (rangschikking): gebruik categorie-ID.

Merk op dat u voor geen van deze de naam van uw categorie gebruikt. Zelfs de categorie naam parameter neemt de naaktslak als zijn waarde, niet de naam ervan. Ik heb de neiging om deze te gebruiken in plaats van de ID, want wanneer ik later terugkom naar mijn code, zijn slakken gemakkelijker te identificeren dan ID's. Als u echter denkt dat uw sitegebruikers de slak voor een of meer categorieën kunnen wijzigen, raad ik aan het ID te gebruiken om problemen te voorkomen.

Laten we een kijkje nemen naar hoe u elk van deze gebruikt.

De kat Parameter

De kat parameter is eenvoudig: gebruik gewoon een enkele categorie-ID of een reeks categorie-ID's.

Querying voor één categorie ziet er als volgt uit:

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

Query's voor meerdere categorieën zien er als volgt uit:

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

Het bovenstaande zal WordPress vertellen om berichten op te halen die in een van de vermelde categorieën staan. Als u berichten in elk van een reeks categorieën wilt vinden, gebruikt u de category_and parameter, waarvan meer binnenkort.

Je kunt ook de parameter kat gebruiken om berichten te vinden die in de ene categorie maar niet in de andere categorie zijn, door als volgt een minteken vóór de categorie-ID te gebruiken:

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

Het bovenstaande zou berichten in categorie opvragen 12 maar niet in categorie 13.

De category_name-parameter

De categorie naam parameter gebruikt de categorie slug, niet de naam (verwarrend, ik weet het!). Je kunt het opnieuw gebruiken met een enkele categorie of met een reeks categorieën om berichten te vinden die in een van de categorieën voorkomen.

Om berichten in een enkele categorie op te vragen, voegt u toe:

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

En om berichten te vinden in een of meer van een aantal categorieën, gebruik dit:

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

Net als bij de katparameter, vindt dit geen berichten in de kolom allemaal van de categorieën, maar het zal berichten vinden in ieder van de categorieën.

De categorie__en Parameter

Als u berichten wilt vinden die zich in een hele reeks categorieën bevinden, is dit de parameter die u gebruikt. Het heeft de categorie-ID's nodig voor zijn waarde. Dus om berichten te vinden in alle drie categorieën, zou je gebruiken:

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

Merk op dat dit een array niet een string gebruikt, dus je codeert het anders. De parameter heeft twee underscores in de naam: gebruik er maar één en het zal niet werken.

De categorie__in Parameter

De volgende parameter zoekt naar berichten in een of meer van een reeks categorieën. Het werkt eigenlijk op dezelfde manier als de cat-parameter, en neemt ook de categorie-ID als zijn waarde.

Dus als u wilt zoeken naar berichten in een of meer van een reeks categorieën, gebruikt u:

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

Het bovenstaande zou berichten van een of meer van deze categorieën ophalen.

De categorie__not_in Parameter

De category__not_in parameter doet zoals je zou verwachten: hij zoekt naar berichten die niet in een categorie of een reeks categorieën vallen.

Als u berichten van de ene categorie wilt uitsluiten, gebruikt u het volgende:

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

En om berichten uit een reeks categorieën uit te sluiten:

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

Hiermee worden berichten uit een van deze categorieën uitgesloten.

Tag-parameters

Tags hebben iets verschillende parameters uit categorieën: je kunt niet uitzoeken wat ze kunnen zijn op basis van je kennis van categorieparameters, ben ik bang!

De tag-parameters zijn:

  • label (draad): gebruik tag slug.
  • Tag ID (int): gebruik tag-ID.
  • tag__and (rangschikking): gebruik tag-id's.
  • tag__in (rangschikking): gebruik tag-id's.
  • tag__not_in (rangschikking): gebruik tag-id's.
  • tag_slug__and (rangschikking): gebruik tagslakken.
  • tag_slug__in (rangschikking): gebruik tagslakken.

Laten we naar elk van deze kijken.

De tag Parameter

De label parameter neemt de tag slug als waarde en kan worden gebruikt om berichten te vinden met één tag of met een van een reeks tags.

Dus om berichten te vinden met één tag die u gebruikt:

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

En om berichten te vinden met tags van een reeks tags:

$ args = array ('tag' => 'my-tag, uw-tag, another-tag');

Merk op dat de bovenstaande zoekopdrachten berichten bevatten met ieder van de tags in de array, niet allemaal.

De parameter tag_id

De Tag ID parameter werkt op een vergelijkbare manier als de kat parameter: het duurt de tag-ID en kan worden gebruikt met een enkele tag of meerdere tags.

Om berichten te vinden met een enkele tag, gebruik je dit:

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

Om berichten te vinden met een of meer tags uit een reeks tag-ID's:

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

Je kan ook gebruiken Tag ID om tags uit te sluiten, hetzij bij gebruik voor enkele tags of meerdere tags.

Dus om berichten te zoeken, behalve die met een bepaalde tag, zou u het volgende gebruiken:

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

Wanneer u berichten wilt vinden met een van de twee tags, maar zonder een andere tag, gebruikt u dit:

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

Dus het bovenstaande zal berichten opvragen met een of beide tags 21 of 23 maar geen tag 22.

De tag__in Parameter

Met deze parameter kunt u berichten vinden met een of meer van een reeks tags. Het werkt op dezelfde manier als label indien gebruikt met een array:

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

Hiermee worden berichten opgevraagd met een of alle weergegeven tags. Als je berichten met alle tags wilt vinden, gebruik je tag__and, die ik in een ogenblik zal behandelen.

De tag__not_in Parameter

De tag__not_in Met parameter kunt u berichten opvragen die niet over een bepaalde tag of reeks tags beschikken.

Gebruik het als volgt om één tag uit te sluiten:

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

Merk op dat je nog steeds een array moet gebruiken, ook al gebruik je slechts één tag. Gebruik voor meer tags:

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

Hiermee worden berichten opgevraagd die geen van de bovenstaande tags bevatten.

De tag_slug__and en tag_slug__in Parameters

Deze twee parameters gedragen zich op precies dezelfde manier als de tag__and en tag__in parameters, behalve dat u die tag-slug in uw arrays gebruikt in plaats van de tag-ID.

Dus om bijvoorbeeld berichten te vinden die beide een paar tags hebben, gebruik je tag__slug_in:

$ args = array ('tag_slug__in' => array ('my-tag', 'your-tag', 'another-tag'));

Dit vindt berichten met een van deze tags. U kunt de tagparameter ook gebruiken met een reeks tagslaks om hetzelfde resultaat te bereiken.

Als u berichten met alle tags wilt opnemen, gebruikt u tag_slug__and:

$ args = array ('tag_slug__and' => array ('my-tag', 'your-tag', 'another-tag'));

In plaats van het opvragen van berichten met een van de tags, worden hiermee alleen berichten opgevraagd allemaal van de tags.

Samenvatting

Als u uw berichten op categorie en / of tag bekijkt, is er een grote kans dat u hier iets mee te maken heeft WP_Query. Door bovenstaande argumenten te gebruiken en ze waar nodig te combineren, kunt u krachtige argumenten maken om exact de gegevens te extraheren die u uit de database nodig hebt.