WP_Query Argumenter Forfatter, Søk, Passord og Tillatelser

Så langt i denne serien har du lært om et utvalg av argumenter du kan bruke med WP_Query klasse, for å velge innlegg etter posttype, kategori, tag, metadata, dato, status og mye mer.

I denne siste opplæringen på WP_Query argumenter, jeg kjører gjennom noen mindre brukte parametere som kan gi dine spørsmål enda mer fleksibilitet.

Parametrene vi dekker her er for:

  • forfatter
  • Søke
  • passord
  • tillatelser
  • caching
  • returfelt

Før vi begynner, la oss få en rask oversikt over hvordan du koder dine argumenter med WP_Query.

Et sammendrag om hvordan argumenter fungerer i WP_Query

Når du kodes WP_Query i dine temaer eller plugins må du inkludere fire hovedelementer:

  • Argumentene for spørringen, ved hjelp av parametere som vil bli dekket i denne opplæringen
  • selve spørringen
  • løkken
  • Etterbehandling: lukking hvis og mens koder og tilbakestilling av postdata

I praksis vil dette se ut som følgende:

have_posts ()) // Start looping over spørringsresultatene. mens ($ query-> have_posts ()) $ query-> the_post (); // Innholdet i de forespurte postresultatene går her.  // Gjenopprett originale innleggsdata. wp_reset_postdata (); ?>

Argumentene er hva som forteller WordPress hvilke data som skal hentes fra databasen, og det er de som jeg vil dekke her. Så alt vi fokuserer på her er den første delen av koden:

$ args = array (// Argumenter for søket ditt.);

Som du kan se, er argumentene inneholdt i en matrise. Du lærer hvordan du kodes dem mens du arbeider gjennom denne opplæringen.

Koding av dine argumenter

Det er en bestemt måte å kode på argumentene i arrayet, som er som følger:

$ args = array ('parameter1' => 'verdi', 'parameter2' => 'verdi', 'parameter3' => 'verdi');

Du må legge inn parametrene og deres verdier i enkelt anførselstegn, bruk => mellom dem, og skill dem med et komma. Hvis du får feil, kan WordPress ikke legge til alle dine argumenter på spørringen, eller du kan få en hvit skjerm.

Forfatterparametere

Det er fire parametere du kan bruke til å spørre av forfatter:

  • forfatter (int): bruk forfatter-ID
  • AUTHOR_NAME (string): bruk 'user_nicename' (ikke navn)
  • author__in (matrise): bruk forfatter-ID
  • author__not_in (matrise)

Den første, forfatter, Lar deg spørre innlegg fra en eller flere forfattere ved å levere forfatterens ID:

$ args = array ('author' => '2');

Koden ovenfor spør etter alle innlegg av forfatteren hvis ID er 2.

Du kan også bruke en streng for å spørre innlegg av flere enn en forfatter:

$ args = array ('author' => '1, 2');

Hvis du ønsket å spørre etter navn, ville du bruke AUTHOR_NAME parameter:

$ args = array ('author_name' => 'rachelmccollin'); 

Denne parameteren tar verdien fra user_nicename feltet i databasen som argument, som vises som kallenavnet på Brukers admin skjerm:

Vær oppmerksom på at når dette er redigerbart av brukere, blir du sikrere å bruke forfatter parameter hvis du tror at brukerne kan endre det.

Du kan også spørre etter innlegg fra en rekke forfattere:

$ args = array ('author__in' => array ('1', '2'));

Ovennevnte vil spørre etter innlegg fra to forfattere: de med ID 1 og 2, gir deg de samme resultatene som strengen jeg brukte med forfatter parameter ovenfor.

Til slutt kan du ekskludere innlegg fra en eller flere forfattere som bruker author__not_in parameter. Argumentet under spørringer for alle innlegg unntatt de som er skrevet av forfatteren 1:

$ args = array ('author__not_in' => array ('1'));

Eller du kan utelukke flere forfattere:

$ args = array ('author__not_in' => array ('1', '2'));

Alternativt kan du bruke forfatter parameter og bruk et minustegn foran forfatter-ID for å ekskludere en forfatter:

$ args = array ('author' => '-2'); 

Søk Parameter

Det er bare én parameter for søk, som er s. Bruk den til å søke etter innlegg som samsvarer med et søkeord. Så for eksempel for å søke etter innlegg som inneholder søkeordene min favorittmat, vil du bruke dette:

$ args = array ('s' => 'min favorittmat');

Du kan finne dette nyttig for å søke etter relaterte innlegg med lignende søkeord, for eksempel.

Passord Parametere

Du kan bruke de to passordparametrene til å søke innlegg med og uten passordbeskyttelse:

  • has_password (bool)
  • post_password (string)

Den første parameteren, has_password, Lar deg søke etter innlegg med eller uten passordbeskyttelse. Så å spørre etter innlegg som er passordbeskyttet:

$ args = array ('has_password' => true);

Og for innlegg som ikke har passord:

$ args = array ('has_password' => false);

Du kan også søke etter passordet selv, ved hjelp av post_password parameter:

$ args = array ('post_password' => 'mypassword');

Tillatelser Parameter

Det er bare én parameter tilgjengelig for tillatelser, perm, som du bruker til å spørre innlegg som den nåværende brukeren har tillatelse til å lese. Det tar 'leselig' verdi og er designet for å bli kombinert med andre argumenter.

Så for å spørre passordbeskyttede innlegg og bare vise dem hvis brukeren har de riktige tillatelsene, vil du bruke dette:

$ args = array ('has_password' => true, 'perm' => 'lesbar');

Eller hvis du vil vise utkastsposter hvis den nåværende brukeren har tillatelse til å vise dem, bruker du dette:

$ args = array ('post_status' => 'draft', 'perm' => 'readable');

Caching Paramaters

Det er tre cachingparametere, som forhindrer at dataene hentet av spørringen blir lagt til i hurtigbufferen:

  • cache_results (boolean): post informasjon cache
  • update_post_meta_cache (boolean): Legg inn meta informasjon cache
  • update_post_term_cache (boolean): posttidsinformasjon cache

Standardverdien for alle tre er ekte: Du trenger ikke å bruke dem hvis du vil at dataene skal legges til hurtigbufferen.

Så å vise alle innleggene i produkt posttype, men ikke legge til postinformasjon i hurtigbufferen, vil du bruke dette:

$ args = array ('post_type' => 'produkt', 'cache_results' => false);

Normalt bør du ikke bruke disse parameterne, da det er god praksis å legge til postdata i hurtigbufferen. Men du vil kanskje noen ganger hente innlegg slik at du bare kan bruke noen av postdataene, i så fall trenger du ikke resten av postdataene i hurtigbufferen. Et eksempel kan være når du bare vil sende ut en liste over posttitler med koblinger, i så fall trenger du ikke posttidsdataene eller metadataene som skal legges til hurtigbufferen:

$ args = array ('post_type' => 'produkt', 'update_post_meta_cache' => false, 'update_post_term_cache' => false);

Returfelt Parameter

Du kan bruke Enger parameter for å angi hvilke felt som skal returneres fra søket ditt. Dette kan lagre returdata fra felt i databasen som du ikke trenger når du legger ut dataene i loopen din.

Standard er å returnere alle felt, men du har to alternativer med Enger parameter for å begrense dette. Først 'ids' argument:

$ args = array ('fields' => 'ids');

Dette ville bare returnere en rekke post-IDer og ingen andre felt. Hvis du vil sende ut noe i løkken din (for eksempel posttittelen), må du da bruke funksjoner som get_the_title ($ post-> ID); å skrive ut tittelen, noe som ville være en langvarig måte å gå om ting på.

Det andre argumentet du kan bruke, henter en assosiativ rekke post-IDer med barnepost-IDer:

$ args = array ('fields' => 'id => foreldre');

Du vil bruke dette til å søke etter innlegg i henhold til dine andre argumenter pluss deres barn.

Sammendrag

Denne delen av serien på WP_Query introduserer det endelige settet med parametere for WP_Query klasse. Du kan bruke disse til å spørre innlegg av forfatter, passordbeskyttet status eller passordet selv og søkeord, og for å angi om resultatene av spørringen blir lagt til hurtigbufferen og hvilke felt som returneres av spørringen.

I neste del av denne serien ser du noen eksempler på bruk av WP_Query i dine temaer eller plugins.