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:
Laten we de veranderingen eens bekijken.
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:
OF
, omdat we op zoek zijn naar berichten die ofwel snelle ontbijtrecepten zijn of recepten voor een langzame lunch.EN
omdat je wilt dat het bericht beide termen bevat.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.
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.
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.
Er zijn ook een aantal bugfixes geweest die je misschien nuttig zou kunnen vinden:
date_query
werd gebruikt samen met een tax_query
of meta_query
is opgelost.'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.
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!