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!
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.
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.
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.
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.
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!