Mastering WordPress Meta Data Spørrende innlegg og brukere av Meta Data

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.

Bruke WP_Query til å spørre etter Meta Field Value

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 '
    '; mens ($ the_query-> have_posts ()) $ the_query-> the_post (); ekko '
  • '. get_the_title (). '
  • '; ekko '
'; / * Gjenopprett originale postdata * / wp_reset_postdata ();

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.

Andre sammenligninger

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.

Viser metafelt i WP_Query

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 '
    '; mens ($ the_query-> have_posts ()) $ the_query-> the_post (); ekko '
    • '; ekko '
    • '. get_the_title (). '
    • '; ekko '
    • '. get_post_meta ($ query-> post-> ID, 'director', true). '
    • '; ekko '
  • " ekko '
'; / * Gjenopprett originale postdata * / wp_reset_postdata ();

Bruke WP_User_Query

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_Querys 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 '
    '; foreach ($ user_query-> resultater som $ bruker) echo '
  • '. $ bruker-> display_name. '
  • '; 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 '
    '; foreach ($ user_query-> resultater som $ bruker) echo '
  • '. $ bruker-> display_name. '
  • '; ekko '
';

Wrapping Up

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.