Så langt i denne serien har du lært hvordan du får tilgang til WordPress-metadata, og arbeider med arrays der de returneres. Vi legger ikke bare til egendefinerte felt i WordPress-innlegg, så vi kan vise denne informasjonen, men det er også slik at vi kan sortere etter det.
Nå som du vet hvordan du henter og viser metadata, er det på tide å lære å tilpasse WordPress-sløyfen for å returnere kun innlegg med bestemte metaverdier.
For å tilpasse hvilke innlegg som WordPress returnerer basert på metafelt, må vi bruke WP_Query
og spesifiser a meta_query
. Hvis vi for eksempel hadde en egendefinert innleggstype kalt "filmer" som hadde et tilpasset felt kalt "regissør", kunne vi spørre etter filmer som regissøren var direktør for en av de tre Stjerne krigen filmer.
Ta en titt på koden under og se om du kan bruke din styring av arrays som du har oppnådd i den siste delen for å forstå hva som foregår med meta_query
, som jeg vil bryte ned hva som skjer under koden.
$ sw_args = array ('post_type' => 'filmer', 'meta_query' => array (array ('key' => 'regissør', 'value' => array ('George Lucas', 'Richard Marquand' Irvin Kershner '),' sammenlign '=>' IN ',))); $ query = nytt WP_Query ($ sw_args); hvis ($ the_query-> have_posts ()) echo 'Filmer Av Star Wards Directors
'; ekko '
Som du kan se har vi en rekke regissørs navn som ligger inne i tre andre arrays. La oss ta det fra hverandre, stykke for hverandre.
Først begynner vi en matrise for vår WP_Query
args. Etter vårt første argument 'post_type', begynner vi en matrise for å huse vår meta_query
argumenter.
Innsiden av det angir vi hvilken nøkkel å se etter - i tilfelle 'direktør'. Vi tilbyr også en rekke verdier for å søke etter i nøkkelen.
Det siste argumentet er hvordan man sammenligner disse verdiene, i dette tilfellet spesifiserer vi "IN" for å hente innlegg med disse verdiene i nøkkeldirektøren.
Hva om vi ønsket filmer som der regissert av en regissør av en Star Wars-film, men vil ikke utelukke Star Wars Prequels? Vi kan bare legge til en annen rekke argumenter til vår meta_query
, men denne gangen for verdi bruker du en rekke av disse filmtitlene for nøkkelen film_title
og for å sammenligne, bruk "IKKE LIKE" å ekskludere innlegg som har disse verdiene i film_title
felt.
$ sw_args = array ('post_type' => 'filmer', 'meta_query' => array (array ('key' => 'regissør', 'value' => array ('George Lucas', 'Richard Marquand' Irvin Kershner '),' sammenlign '=>' IN ',), array (' key '=>' film_title ',' value '=>' Phantom Menace ',' Attack of the Clones ',' Revenge of the Sith ' ), 'sammenligne' => 'IKKE LIKE'),)); $ query = nytt WP_Query ($ sw_args);
Nå vil WordPress se etter filmer av disse tre styremedlemmene, hvis tittel ikke er en av de tre prequels.
Så langt har jeg vist deg hvordan du bruker WP_Query
å finne innlegg som har spesifikke verdier for et egendefinert felt, men ikke hvordan å vise disse feltene.
Viser disse feltene er stort sett det samme som før, men i stedet for å bruke get_the_ID ()
å spesifisere ID for get_post_meta ()
Vi spesifiserer det i en objektkontekst. Så i vår løkke, som du kan se nedenfor, blir IDen hentet litt annerledes med $ Query-> post-> ID
.
$ sw_args = array ('post_type' => 'filmer', 'meta_query' => array (array ('key' => 'regissør', 'value' => array ('George Lucas', 'Richard Marquand' Irvin Kershner '),' sammenlign '=>' IN ',), array (' key '=>' film_title ',' value '=>' Phantom Menace ',' Attack of the Clones ',' Revenge of the Sith ' ), 'sammenligne' => 'IKKE LIKE'),)); $ query = nytt WP_Query ($ sw_args); hvis ($ the_query-> have_posts ()) echo 'Filmer Av Star Wards Directors
'; ekko '
Akkurat som i den siste delen da vi brukte WP_Query
For å finne innlegg med bestemte verdier for ulike tilpassede felt, kan vi bruke WP_Query
s brukerbord tilsvarende WP_User_Query
.
For eksempel, hvis vi hadde et egendefinert felt kalt subscriber_level
og ønsket å finne bare de brukerne som hadde abonnentnivået på extra_special
eller super_special
vi kunne, på samme måte som vi søkte etter filmer regissert av de tre regissørene av Star Wars-filmene:
$ args = array ('meta_query' => array (array ('key' => 'abonnent_level', 'verdi' => array ('extra_special', 'super_special'); 'sammenligne' => '=') ; $ user_query = ny WP_User_Query ($ args); hvis (! tomt ($ user_query-> resultater)) echo 'Ekstra og Super spesielle brukere
'; ekko '
Akkurat som med WP_Query
, Vi kan kombinere ulike sammenligninger for å kontrollere hvilke brukere som returnerer søket. Dette neste eksempelet kombinerer det siste spørsmålet med et søk, denne tiden av wp_users
bord selv for alle brukere hvis navn er Luke, Han eller Leia.
$ args = array ('meta_query' => array (array ('key' => 'abonnent_level', 'verdi' => array ('extra_special', 'super_special'); 'sammenligne' => '=') 'search' => array ('Luke', 'Han', 'Leia'), 'search_columns' => array ('user_nicename', 'display_name')); $ user_query = ny WP_User_Query ($ args); hvis (! tomt ($ user_query-> resultater)) echo 'Ekstra og Super Spesielle Brukere Oppkalt Luke, Han eller Leia
'; ekko '
I denne serien har du blitt introdusert til WordPress metadata og lært noen leksjoner om kjernefag-konsepter underveis.
Du har lært hvordan du får verdiene fra feltene som lagrer innlegg og bruker metadata og hvordan du bygger forespørsler for innlegg og brukere basert på metadata. Med denne kunnskapen kan du være forberedt på å jobbe med noen få tilpassede felt og på vei til å bruke WordPress som et komplekst innholdshåndteringssystem.