Forespørselsforbedringer i de nyeste versjonene av WordPress

I løpet av det siste året har det blitt skrevet mye om forbedringene til WordPress brukergrensesnitt: den mest snakket om endring har vært den forbedrede skriveopplevelsen.

Men hvis du er en utvikler vil du være villig til å vite mindre om det og mer om hva som er endret under hetten. Her viser jeg en av de mest interessante endringene for utviklere: forbedringer av bestemte typer søk.

De viktigste endringene er som følger:

  • Støtte for nestede spørringer har blitt lagt til for spørringer etter metadata, datoer og taksonomi.
  • Ekstra parametere har blitt lagt til for å spørre kommentarer.
  • Og noen feil har blitt løst også!

La oss se på endringene.

Nested Queries

I tidligere versjoner av WordPress kan du bruke en OG eller ELLER uttalelse for å definere spørringer for taksonomi vilkår, datoer og metadata. Så for eksempel vil følgende argumenter bli brukt i en spørring på et oppskriftssted som utsender raske frokostoppskrifter:

 'post', 'tax_query' => array ('relation' => 'OG', array ('taksonomi' => 'speed', 'field' => 'slug' )), array ('taxonomy' => 'måltid', 'field' => 'slug', 'terms' => array ('frokost')))); $ query = nytt WP_Query ($ args); ?>

Dette ser etter 'hastighet' og 'måltid' taksonomier og utgangsposter med 'rask' og 'frokost' vilkårene henholdsvis.

Men hva om du ønsket å skrive et mer komplekst spørsmål? La oss si at du ville ha raske oppskrifter til frokost og langsomme oppskrifter til lunsj (kanskje for noen som ønsker å få frokost gjort raskt, så de har mer tid til å lage mat lunsj!). Du vil ikke bruke en enkel OG uttalelse for å bli med alle elementene i søket ditt, siden da vil du få sakte oppskrifter til frokost og lunsj, for eksempel. Og du vil ikke bruke en ELLER uttalelse som knytter alle betingelsene, da du får alle slags oppskrifter som bare har en av de forespurte vilkårene sammen med de andre du vil filtrere ut.

Den gode nyheten er at nå kan du gjøre dette. For å spørre raske oppskrifter til frokost og sakte oppskrifter til lunsj, bruker du følgende:

 array ('relation' => 'OR', array ('relasjon' => 'OG', array ('taxonomy' => 'måltid', 'field' => 'slug', 'terms' => array frokost)), matrise ('taxonomy' => 'speed', 'field' => 'slug', 'terms' => array ('taxonomy' => 'meal', 'field' => 'slug', 'terms' => array slug ',' terms '=> array (' slow '))))))); $ query = nytt WP_Query ($ args); ?>

Her har jeg brukt to nestede arrays:

  • Den ytre gruppen bruker ELLER, fordi vi leter etter innlegg som er enten raske frokostoppskrifter eller sakte lunsjoppskrifter.
  • Den første nestede gruppen ser etter innlegg som er raske frokostoppskrifter, ved hjelp av OG fordi du vil at innlegget skal ha begge vilkårene.
  • Den andre nestede gruppen ser etter sakte lunsjoppskrifter, igjen med bruk av OG.

Selvfølgelig kan du variere dine spørsmål for å inkludere flere taksonomiske vilkår og verdier, og få så komplisert som du trenger.

Bruk av nestede spørringer: Taksonomi Vilkår, Metadata og Datoer

Eksemplet jeg har gitt ovenfor bruker taksonomiske vilkår, men denne funksjonen har også blitt lagt til dato og metadatasøk. Metadata er potensielt der ting kan bli interessante, ettersom du har mulighet for så mange verdier.

Syntaxen fungerer på samme måte som dato og metadatasøk. For meta spørringer du erstatter tax_query med meta_query og bruk 'nøkkel' og 'verdi' som parametrene. For datoforespørsler du erstatter tax_query med date_query og bruk dataparametrene som er oppgitt i WordPress Codex.

Kommentar Parametre

For å spørre kommentarer, bruker du WP_Comment_Query klasse i stedet for de mest brukte WP_Query klasse. Denne klassen har hatt åtte nye parametere lagt til det:

  • 'Author__in': identifiser kommentarforfatter (eller en rekke forfattere)
  • 'Author__not_in': Identifiser kommentarer ikke av en bestemt forfatter (eller en rekke forfattere)
  • 'Post_author__in': Identifiser forfatter (eller utvalg av forfattere) av innlegget kommentaren ble laget på
  • 'Post_author__not_in': ekskluder kommentarer gjort på innlegg skrevet av bestemte forfattere eller utvalg av forfattere
  • 'Comment__in': kommentarer med en bestemt ID eller en rekke ID-er
  • 'Comment__not_in': ekskluder kommentarer med en bestemt ID eller en rekke IDer
  • 'Post__in': kommentarer gjort på et innlegg eller en rekke innlegg (ved hjelp av post-ID)
  • 'Post__not_in': ekskluder kommentarer gjort på et innlegg eller en rekke innlegg (ved hjelp av post-ID)

Verdiene som brukes for disse er forfatter-ID, kommentar ID eller post-ID etter behov.

Legg merke til at WP_Comment_Query klassen støtter nå også nestede spørringer.

Feilrettinger

Det har også vært et par feilrettinger som du kanskje finner nyttige:

  • En feil som forårsaket spørringer å mislykkes når a date_query ble brukt sammen med a tax_query eller meta_query har blitt løst.
  • Når 'orderby' => 'meta_value' ble brukt når du passerte en 'Meta_query' med ELLER relasjon i WP_Query, dette pleide å bryte spørringen. Dette har blitt løst.

Hvis du vil ha lowdown på alle detaljene, kan du finne det på det store WordPress-kjerneområdet.

Sammendrag

Disse forbedringene på spørringer tar WordPress et skritt videre til full CMS-funksjonalitet. Evnen til å bruke nestede spørringer betyr at du kan utdata innhold på mye mer fleksible og komplekse måter. Det vil være interessant å se hvordan folk bruker dem!