Förfrågningsförbättringar i de senaste versionerna av WordPress

Inom det senaste året har mycket skrivits om förbättringarna i WordPress användargränssnitt: den mest omtalade förändringen har varit den förbättrade skrivarupplevelsen.

Men om du är en utvecklare vill du veta mindre om det och mer om vad som ändrats under huven. Här visar jag en av de mest intressanta ändringarna för utvecklare: förbättringar av vissa typer av frågor.

De viktigaste förändringarna är följande:

  • Stöd för kapslade frågor har lagts till för frågor angående metadata, datum och taxonomi.
  • Extra parametrar har lagts till för att fråga kommentarer.
  • Och några buggar har fixats också!

Låt oss ta en titt på ändringarna.

Nested Queries

I tidigare versioner av WordPress kan du använda en OCH eller ELLER uttalande för att definiera frågor om taxonomi villkor, datum och metadata. Så till exempel, kommer följande argument att användas i en fråga på en recept webbplats som matar ut snabba frukost recept:

 'post', 'tax_query' => array ('relation' => 'OCH', array ('taxonomy' => 'hastighet', 'field' => 'slug', 'terms' => )), array ('taxonomy' => 'meal', 'field' => 'slug', 'terms' => array ('frukost')))); $ query = nytt WP_Query ($ args); ?>

Det här letar efter 'fart' och 'måltid' taxonomier och utsändningar med 'snabbt' och 'frukost' termer.

Men vad händer om du vill skriva en mer komplex fråga? Låt oss säga att du ville ha snabba recept för frukost och långsamma recept för lunch (kanske för den som vill få frukost, gjort snabbt så att de har mer tid att laga lunch!). Du vill inte använda en enkel OCH uttalande om att ansluta till alla element i din fråga, sedan dess skulle du få långsamma recept till frukost och lunch, till exempel. Och du vill inte använda en ELLER uttalande som länkar alla villkor, eftersom du får alla slags recept som bara har en av de frågade villkoren tillsammans med andra som du vill filtrera ut.

Den goda nyheten är att du nu kan göra detta. För att fråga snabba recept till frukost och långsamma recept till lunch, använder du följande:

 array ('relation' => 'ELLER', array ('relation' => 'OCH', array ('taxonomy' => 'måltid', 'fält' => 'slug', 'terms' => array frukost ")), array ('taxonomy' => 'hastighet', 'fält' => 'slug', 'terms' => array ('quick'))), array ('relation' => 'OCH' array ('taxonomy' => 'meal', 'field' => 'slug', 'terms' => array slug ',' terms '=> array (' slow '))))))); $ query = nytt WP_Query ($ args); ?>

Här har jag använt två nestade arrays:

  • Den yttre gruppen använder ELLER, eftersom vi letar efter inlägg som är antingen snabba frukost recept eller långsamma lunch recept.
  • Den första kapslade matrisen söker efter inlägg som är snabba frukostrecept, med hjälp av OCH eftersom du vill att posten ska ha båda termerna.
  • Den andra inbäddade matrisen letar efter långsamma lunch recept, återigen använder OCH.

Självklart kan du variera dina frågor till att inkludera flera taxonomi villkor och värden, och bli så komplexa som du behöver.

Använda nestade sökningar: Taxonomy Villkor, Metadata och Datum

Exemplet jag har givit ovan använder taxonomy termer, men den här funktionen har också lagts till datum och metadatafrågor. Metadata är potentiellt där saker kan bli intressanta, eftersom du har utrymme för så många värden.

Syntaxen fungerar på exakt samma sätt för datum och metadatafrågor. För meta frågor du ersätter tax_query med meta_query och använda 'nyckel' och 'värde' som parametrarna. För datumfrågor du ersätter tax_query med date_query och använd de datumparametrar som finns i WordPress Codex.

Kommentar Parametrar

För att fråga kommentarer, använder du WP_Comment_Query klass i stället för de mer vanliga WP_Query klass. Den här klassen har fått åtta nya parametrar till den:

  • 'Author__in': Identifiera kommentarförfattare (eller en uppsättning författare)
  • 'Author__not_in': Identifiera kommentarer inte av en viss författare (eller en uppsättning av författare)
  • 'Post_author__in': identifiera författare (eller uppsättning av författare) av posten som kommentaren gjordes på
  • 'Post_author__not_in': utesluta kommentarer som gjorts på inlägg som skrivits av en viss författare eller en uppsättning författare
  • 'Comment__in': kommentarer med ett visst ID eller en rad ID-nummer
  • 'Comment__not_in': uteslut kommentarer med ett visst ID eller en rad ID-nummer
  • 'Post__in': kommentarer gjorda på ett inlägg eller en rad inlägg (med post-ID)
  • 'Post__not_in': uteslut kommentarer som görs på ett inlägg eller en rad inlägg (med post-ID)

De värden som används för dessa är författar-ID, kommentar-ID eller post-ID som passande.

Observera att WP_Comment_Query klassen stöder nu också kapslade frågor.

Bug fixar

Det har också varit ett par buggfixar som du kan hitta till hjälp:

  • En bugg som orsakade frågor att misslyckas när a date_query användes tillsammans med a tax_query eller meta_query har fixats.
  • När 'orderby' => 'meta_value' användes när man passerade en 'Meta_query' med ELLER relation i WP_Query, Detta brukade bryta frågan. Detta har åtgärdats.

Om du vill ha lowdown på alla detaljer, kan du hitta den på den stora WordPress-kärnan.

Sammanfattning

Dessa förbättringar på frågor tar WordPress ett steg längre till full CMS-kapacitet. Möjligheten att använda kapslade sökningar innebär att du kan skriva ut innehåll på mycket mer flexibla och komplexa sätt. Det blir intressant att se hur folk använder dem!