Queryverbeteringen in de nieuwste versies van WordPress

In het afgelopen jaar is veel geschreven over de verbeteringen aan de gebruikersinterface van WordPress: de meest besproken verandering is de verbeterde schrijfervaring.

Maar als je een ontwikkelaar bent, wil je daar minder over weten en meer over wat er onder de motorkap is veranderd. Hier zal ik een van de meest interessante veranderingen voor ontwikkelaars laten zien: verbeteringen aan bepaalde soorten vragen.

De belangrijkste wijzigingen zijn als volgt:

  • Ondersteuning voor geneste query's is toegevoegd voor query's over metagegevens van post, datums en taxonomie.
  • Er zijn extra parameters toegevoegd voor het opvragen van opmerkingen.
  • En sommige bugs zijn ook opgelost!

Laten we de veranderingen eens bekijken.

Geneste zoekopdrachten

In eerdere versies van WordPress kon je een EN of OF statement om zoekopdrachten voor taxonomie-termen, datums en metadata te definiëren. De volgende argumenten worden bijvoorbeeld gebruikt in een query op een receptensite met snelle ontbijtrecepten:

 'post', 'tax_query' => array ('relation' => 'AND', array ('taxonomy' => 'speed', 'field' => 'slug', 'terms' => array ('quick' )), array ('taxonomie' => 'maaltijd', 'veld' => 'slug', 'terms' => array ('ontbijt')))); $ query = new WP_Query ($ args); ?>

Dit zoekt naar de 'snelheid' en 'maaltijd' taxonomieën en levert berichten met de 'snel' en 'ontbijt' termen respectievelijk.

Maar wat als u een complexere vraag wilde schrijven? Laten we zeggen dat je snelle recepten voor ontbijt en langzame recepten voor de lunch wilde (misschien voor iemand die snel wil ontbijten, zodat ze meer tijd hebben om een ​​lunch te bereiden!). U wilt geen eenvoudige gebruiken EN verklaring om aan alle elementen van uw vraag mee te doen, sindsdien zou u langzame recepten voor ontbijt krijgen en lunch bijvoorbeeld. En je wilt geen een gebruiken OF verklaring die alle termen met elkaar verbindt, omdat je allerlei recepten krijgt die alleen een van de bevraagde termen hebben samen met andere die je eruit wilt filteren.

Het goede nieuws is dat je nu dit kunt doen. Om snelle recepten voor ontbijt en langzame recepten voor lunch te vragen, zou u het volgende gebruiken:

 array ('relation' => 'OR', array ('relation' => 'AND', array ('taxonomy' => 'meal', 'field' => 'slug', 'terms' => array (' ontbijt ')), array (' taxonomie '=>' snelheid ',' veld '=>' slug ',' terms '=> array (' quick '))), array (' relation '=>' AND ', array ('taxonomie' => 'maaltijd', 'veld' => 'slug', 'terms' => array ('lunch')), array ('taxonomie' => 'snelheid', 'veld' => ' slug ',' terms '=> array (' slow ')))))); $ query = new WP_Query ($ args); ?>

Hier heb ik twee geneste arrays gebruikt:

  • De buitenste array gebruikt OF, omdat we op zoek zijn naar berichten die ofwel snelle ontbijtrecepten zijn of recepten voor een langzame lunch.
  • De eerste geneste array zoekt naar berichten die snelle ontbijtrecepten zijn, met behulp van EN omdat je wilt dat het bericht beide termen bevat.
  • De tweede geneste array zoekt naar recepten voor een langzame lunch, opnieuw gebruikt EN.

Natuurlijk kunt u uw zoekopdrachten variëren om meerdere taxonomie-termen en -waarden op te nemen en zo gecompliceerd te worden als u nodig heeft.

Toepassen van geneste zoekopdrachten: taxonomiebepalingen, metagegevens en datums

Het voorbeeld dat ik hierboven heb gegeven, gebruikt taxonomie-termen, maar deze functie is ook toegevoegd aan de datum en metadata-query's. Metadata is potentieel waar dingen interessant kunnen worden, omdat je de ruimte hebt voor zoveel waarden.

De syntaxis werkt op exact dezelfde manier voor datum- en metagegevensvragen. Voor meta-query's die u vervangt tax_query met meta_query en gebruiken 'sleutel' en 'waarde' als de parameters. Voor datumzoekopdrachten die u vervangt tax_query met date_query en gebruik de datumparameters in de WordPress Codex.

Reactieparameters

Om opmerkingen te maken, gebruikt u de WP_Comment_Query klasse in plaats van de meest gebruikte WP_Query klasse. Aan deze klasse zijn acht nieuwe parameters toegevoegd:

  • 'Author__in': identificeer auteur van commentaar (of een reeks auteurs)
  • 'Author__not_in': identificeer opmerkingen niet door een bepaalde auteur (of een reeks auteurs)
  • 'Post_author__in': identificeer de auteur (of array van auteurs) van de post waarop de opmerking is geplaatst
  • 'Post_author__not_in': sluit opmerkingen uit die zijn geplaatst op berichten die zijn geschreven door een bepaalde auteur of een reeks auteurs
  • 'Comment__in': opmerkingen met een bepaalde ID of reeks ID's
  • 'Comment__not_in': sluit opmerkingen uit met een bepaalde ID of reeks ID's
  • 'posten in': opmerkingen gemaakt over een bericht of reeks berichten (met behulp van de bericht-ID)
  • 'Post__not_in': opmerkingen over een bericht of reeks berichten uitsluiten (met behulp van de bericht-ID)

De waarden die hiervoor worden gebruikt, zijn de auteurs-ID, opmerking-ID of bericht-ID, al naar gelang.

Merk op dat de WP_Comment_Query klasse ondersteunt nu ook geneste query's.

Bugfixes

Er zijn ook een aantal bugfixes geweest die je misschien nuttig zou kunnen vinden:

  • Een fout waardoor query's faalden wanneer a date_query werd gebruikt samen met een tax_query of meta_query is opgelost.
  • Wanneer 'orderby' => 'meta_value' werd gebruikt bij het passeren van een 'Meta_query' met de OF relatie in WP_Query, dit was om de vraag te doorbreken. Dit is opgelost.

Als u de details van alle details wilt weten, kunt u deze vinden op de make-up WordPress-kernsite.

Samenvatting

Door deze verbeteringen in zoekopdrachten is WordPress een stap verder naar volledige CMS-mogelijkheden. De mogelijkheid om geneste zoekopdrachten te gebruiken, betekent dat u inhoud op veel flexibelere en complexere manieren kunt uitvoeren. Het zal interessant zijn om te zien hoe mensen ze gebruiken!