Mastering WP_Meta_Query & WP_Date_Query

Velkommen til den siste delen av serien-vel, teknisk sett blir den endelige delen "Serie Finale", men du får ideen. I denne delen skal du lære om to søskensklasser kalt WP_Meta_Query og WP_Date_Query.

Uten videre, la oss begynne!

Arbeider med alle typer metadata gjennom WP_Meta_Query-klassen

De WP_Meta_Query klassen er en "hjelperklasse", som hjelper WP_Query å stille spørsmål med metadata.

Som du vet, lagrer WordPress tre typer metadata i databasen: post meta, user meta og comment meta. Vi så i de foregående opplæringene at vi kan kjøre metaforespørsler i spørsmålene vi lager med WP_Query, WP_User_Query og WP_Comment_Query klasser (med 'Meta_query' parameter). De WP_Meta_Query kjører faktisk når du gjør disse spørsmålene.

Vises, du kan få SQL-ene for disse meta-relaterte spørringene ved hjelp av WP_Meta_Query klasse. Denne klassen får egentlig ikke resultatene av den oppgitte spørringen, men i stedet forbereder SQL-kommandoene for at du skal bruke et annet sted.

Eksempel Bruk av WP_Meta_Query-klassen

Vi kan ikke si at det er en opplæring hvis vi ikke gjør et eksempel, ikke sant? Med et enkelt eksempel skal vi se hvordan vi kan bruke WP_Meta_Query klasse i virkeligheten. (Gitt, det er en ekstremt spesifikk ting å få SQL-koden til en meta-relatert spørring, men jeg vil prøve å komme opp med et ekteeksempel.)

La oss forestille deg at du vil lage en spesiell "relatert innleggsplugin" til ditt eget nettsted, der du vil vise innlegg som har samme meta-verdi for en meta-nøkkel-eller en annen meta verdi for en annen meta-nøkkel. Og i stedet for å lage et metaforespørsmål innen a WP_Query For eksempel, du vil få SQL-koden til spørringen til å bruke den dynamisk i separate kodeblokker. Her er trinnene for å forberede den SQL-koden:

 'ELLER', array ('meta_key' = '' Some_Key ',' meta_value '=>' Some_Value ',' sammenligne '=>' = '), array (' meta_key '=>' Some_Other_Key ',' meta_value '=> 'Some_Other_Value', 'compare' => '=')); $ my_meta_query = ny WP_Meta_Query; $ my_meta_query-> parse_query_vars ($ my_meta_query_args); $ my_meta_query_sql = $ my_meta_query-> get_sql ('innlegg', $ wpdb-> innlegg, 'ID'); ?>

Der går du: The $ my_meta_sql variabel lagrer SQL-koden for ditt spesielle søk, og du kan bruke denne SQL-koden hvor som helst du vil i ditt prosjekt.

Utfordrende datoforespørsler med WP_Date_Query-klassen

Akkurat som WP_Meta_Query, de WP_Date_Query er en hjelperklasse for WP_Query, WP_User_Query og WP_Comment_Query klasser. Denne hjelpeklassen ble introdusert i WordPress versjon 3.7. Først da støttet ikke klassen WP_User_Query, men siden 4.1-versjonen kan du spørre inn i brukerbordet (den user_registered kolonne spesifikt).

Lik WP_Meta_Query og dens evne til å spørre meta nøkler og verdier, WP_Date_Query klassen tillater oss å søke datofelt i innleggene, kommentarene og brukerne tabeller. Og akkurat som WP_Meta_Query, Denne hjelpeklassen lar deg også returnere den forberedte SQL-koden for å kjøre en datorelatert spørring.

Eksempel Bruk av WP_Date_Query Class

For å forstå fullt ut hvordan WP_Date_Query klassearbeid, la oss gå gjennom et eksempel med det. Det kommer til å være enda et unødvendig bestemt eksempel, men det ville ikke føles riktig å forlate denne delen uten et eksempel.

La oss forestille oss at vi av en eller annen grunn må spørre om kommentarer som er laget i den nåværende måneden og før klokken 12.00. (Vær så snill skyt meg en kommentar hvis du finner et godt tilfelle for å hente kommentarer gjort i nåværende måned og før middag!) Slik får du SQL-koden for dette bisarre spørringen:

 dato ('n'),) array ('før' => 'middag'), 'relation' => 'OG'); $ my_date_query = nytt WP_Date_Query ($ my_date_query_args, 'comment_date'); $ my_date_query_sql = $ my_date_query-> get_sql (); ?>

Der går du. Husk at du kan bruke PHP relative datoformater, som er veldig nyttige.

Raskt tips: Christian Bruckner har en flott innlegg på MarketPress.com om hvordan WP_Date_Query virker. Det er litt utdatert (fordi det var skrevet før WordPress 4.1 ble utgitt), men det er veldig godt skrevet og fortsatt en god lesning. Husk å sjekke det ut.

Wrapping Everything Up

Med disse to hjelperklassene slutter vi den lange reisen til å dissekere WP_Query klasse. Dette var en av de lengste opplæringsseriene i historien til Tuts +, så takk for at du har med oss ​​til slutten! I neste (og siste) delen skal vi gjenskape hva vi gikk gjennom for siste gang og lukke serien.

Har du noe å legge til i denne artikkelen? Hvis så, ikke nøl med å dele dine tanker i kommentarfeltet nedenfor. Og hvis du likte artikkelen, ikke glem å dele den med vennene dine!