WP_Query Argument Författare, Sök, Lösenord och behörigheter

Hittills i denna serie har du lärt dig ett urval av argument du kan använda med WP_Query klass, för att välja inlägg per posttyp, kategori, tagg, metadata, datum, status och mycket mer.

I den här sista handledningen på WP_Query argument, jag kör igenom några mindre vanliga parametrar som kan ge dina frågor ännu större flexibilitet.

Parametrarna vi täcker här är för:

  • författare
  • Sök
  • Lösenord
  • behörigheter
  • caching
  • returfält

Innan vi börjar, låt oss få en snabb sammanfattning om hur du kodar dina argument med WP_Query.

Ett sammanfattning om hur argument fungerar i WP_Query

När du kodar WP_Query i dina teman eller plugins måste du inkludera fyra huvudelement:

  • Argumenten för frågan, med parametrar som kommer att omfattas av denna handledning
  • själva frågan
  • loopen
  • avslutas: stänger om och under taggar och återställer postdata

I praktiken kommer det att se ut som följande:

have_posts ()) // Starta looping över sökresultatet. medan ($ query-> have_posts ()) $ query-> the_post (); // Innehållet i de efterfrågade postresultaten går här.  // Återställ ursprungliga postdata. wp_reset_postdata (); ?>

Argumenten är vad som säger WordPress vilka data som hämtas från databasen och det är de som jag täcker här. Så allt vi fokuserar på här är den första delen av koden:

$ args = array (// Arguments for your query.);

Som du kan se finns argumenten i en array. Du lär dig hur du kodar dem när du arbetar genom den här handledningen.

Kodning av dina argument

Det finns ett visst sätt att koda argumenten i arrayen, vilket är enligt följande:

$ args = array ('parameter1' => 'värde', 'parameter2' => 'värde', 'parameter3' => 'värde');

Du måste bifoga parametrarna och deras värden i enskilda citattecken, använd => mellan dem och separera dem med ett komma. Om du får fel kan WordPress inte lägga till alla dina argument på frågan eller du kan få en vit skärm.

Författareparametrar

Det finns fyra parametrar du kan använda för att fråga efter författare:

  • författare (int): använd författar-ID
  • författarens namn (sträng): använd 'användarnamn' (ej namn)
  • author__in (array): använd författar-ID
  • author__not_in (array)

Den första, författare, låter dig fråga inlägg av en eller flera författare, genom att tillhandahålla författarens ID:

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

Koden ovan frågar alla inlägg av författaren vars ID är 2.

Du kan också använda en sträng för att fråga inlägg av mer än en författare:

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

Om du ville fråga med namn skulle du använda författarens namn parameter:

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

Denna parameter tar värdet från user_nicename fält i databasen som dess argument, som visas som smeknamn på användaradministrationsskärmen:

Observera att eftersom detta är redigerbart av användare, är du säkrare att använda författare parameter om du tror att dina användare kan ändra det.

Du kan också fråga efter inlägg av en rad författare:

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

Ovanstående kommer att fråga för inlägg av två författare: de med ID 1 och 2, vilket ger dig samma resultat som strängen som jag använde med författare parameter ovan.

Slutligen kan du utesluta inlägg av en eller flera författare som använder author__not_in parameter. Argumentet under frågor för alla inlägg utom de av författaren 1:

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

Eller du kan utesluta flera författare:

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

Alternativt kan du använda författare parameter och använd ett minustecken framför författarens ID för att utesluta en författare:

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

Sökparameter

Det finns bara en parameter för sökning, vilket är s. Använd den för att fråga efter inlägg som matchar en sökterm. Så till exempel för att fråga efter inlägg som innehåller sökorden min favoritmat, skulle du använda det här:

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

Det kan hända att du kan söka efter relaterade inlägg med liknande sökord, till exempel.

Lösenordsparametrar

Du kan använda de två lösenordsparametrarna för att fråga inlägg med och utan lösenordsskydd:

  • has_password (bool)
  • post_password (sträng)

Den första parametern, has_password, låter dig fråga efter inlägg med eller utan lösenordsskydd. Så att fråga efter inlägg som är lösenordsskyddade:

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

Och för inlägg som inte har lösenord:

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

Du kan även fråga med själva lösenordet med hjälp av post_password parameter:

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

Tillstånd Parameter

Det finns bara en parameter tillgänglig för behörigheter, perm, som du använder för att fråga inlägg som den nuvarande användaren har tillstånd att läsa. Det tar 'läsbar' värde och är utformat för att kombineras med andra argument.

Så att fråga lösenordsskyddade inlägg och visa dem endast om användaren har rätt behörigheter, skulle du använda det här:

$ args = array ('has_password' => true, 'perm' => 'läsbar');

Eller om du vill visa utkastsposter om den nuvarande användaren har behörighet att visa dem, använder du det här:

$ args = array ('post_status' => 'draft', 'perm' => 'läsbar');

Caching Paramaters

Det finns tre cache-parametrar som förhindrar att data som hämtas av frågan läggs till i cacheminnet:

  • cache_results (boolean): postinformation cache
  • update_post_meta_cache (boolean): posta meta information cache
  • update_post_term_cache (boolean): posttidsinformation cache

Standardvärdet för alla tre är Sann: Du behöver inte använda dem om du vill att data ska läggas till cacheminnet.

Så att visa alla inlägg i produkt posttyp men inte lägga till postinformation till cachen, skulle du använda det här:

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

Normalt bör du inte använda dessa parametrar, eftersom det är bra att lägga till postdata i cacheminnet. Men du kanske ibland vill hämta inlägg så att du bara kan använda några av postdata, i vilket fall du inte behöver resten av postdata i cacheminnet. Ett exempel kan vara när du bara vill skriva ut en lista med posttitlar med länkar, i vilket fall du inte behöver posttidsdata eller metadata som ska läggas till i cacheminnet:

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

Returfält Parameter

Du kan använda fält parameter för att ange vilka fält som ska returneras från din fråga. Detta kan spara tillbaka data från fält i databasen som du inte behöver när du matar ut data i din loop.

Standard är att returnera alla fält, men du har två alternativ med fält parameter för att begränsa detta. Först, det 'ids' argument:

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

Detta skulle bara returnera en rad post-ID och inga andra fält. Om du vill skriva ut någonting i din loop (till exempel posttiteln) måste du då använda funktioner som get_the_title ($ post-> ID); att skriva ut titeln, vilket skulle vara ett långvarigt sätt att gå på saker.

Det andra argumentet du kan använda hämtar en associativ grupp av post-ID med barnpost-ID:

$ args = array ('fields' => 'id => förälder');

Du skulle använda detta för att fråga efter inlägg enligt dina andra argument plus deras barn.

Sammanfattning

Den här delen av serien på WP_Query introducerar den slutliga uppsättningen parametrar för WP_Query klass. Du kan använda dessa för att fråga inlägg av författare, lösenordsskyddad status eller själva lösenordet och sökord och för att ange huruvida resultaten av frågan läggs till cachen och vilka fält som returneras av frågan.

I nästa del av denna serie ser du några exempel på att använda WP_Query i dina teman eller plugins.