Mastering WP_Comment_Query

Vi kommer nästan till slutet av vår serie, "Mastering WP_Query", och det är dags att introducera syskonen i WP_Query klass. I föregående del gick vi över WP_User_Query, och i den här artikeln kommer vi att lära oss om WP_Comment_Query klass.

Låt oss börja!

Vad är WP_Comment_Query?

Introducerad i WordPress version 3.1, den WP_Comment_Query klassen gör nästan allt det tunga arbetet med att fråga kommentarer i WordPress. Det möjliggör förfrågan på två databastabeller, wp_comments och wp_commentmeta, i huvudsak.

Här är skelett av en kommentarfråguslinga med hjälp av WP_Comment_Query klass:

fråga ($ args); om ($ kommentarer) foreach ($ kommentarer som $ comment) // Gör vad du gör för varje kommentar här.  else // Visa meddelande eftersom det inte finns några kommentarer. ?>

Ganska lätt, eller hur? Vi får göra ett exempel bara några steg senare, men låt oss se under huven först.

Egenskaper och metoder för WP_Comment_Query-klassen

Eftersom det inte finns många egenskaper (klassens offentliga variabler) och metoder (klassens offentliga funktioner), går jag snabbt över dem i två minisektioner. Nu kör vi!

Egenskaper för WP_Comment_Query

Till skillnad från WP_Query som har mer än 30 egenskaper (25 av dem är ekvivalenterna för villkorade etiketter), WP_Comment_Query klassen har endast fem egenskaper:

  • $ begäran: En sträng som innehåller SQL-frågan.
  • $ meta_query: En matris för att göra en "meta fråga" med hjälp av WP_Meta_Query klass.
  • $ date_query: En matris för att göra en "datumfråga" med hjälp av WP_Date_Query klass.
  • $ query_vars: En grupp av variablerna i frågan.
  • $ kommentarer: En rad kommentarer som hämtats med frågan.

Den enda metoden för WP_Comment_Query

Ja, det finns bara en metod att använda med WP_Comment_Query klassen, och den metodens namn är fråga().

De fråga() Metoden utför i grunden frågan med hjälp av de parametrar som vi ska gå igenom i nästa avsnitt. men låt oss se vad vi får i en array när vi använder den här metoden:

  • comment_ID: Kommentarens ID.
  • comment_post_ID: Postens ID som kommentaren görs till.
  • COMMENT_AUTHOR: Kommentarens författarens namn.
  • comment_author_email: Kommentarförfattarens e-postadress.
  • comment_author_url: Kommentarens författares webbplatsadress.
  • comment_author_IP: Kommentar IP-adressen.
  • COMMENT_DATE: Kommentar datum.
  • comment_date_gmt: Kommentaren i GMT-tid format.
  • COMMENT_CONTENT: Innehållet i kommentaren.
  • comment_karma: Ett oanvänt databasfält för varje kommentars plugin kan använda det här för att lagra, kommentars karma.
  • comment_approved: Kommentarens godkännande status.
  • comment_agent: Kommentarförfattarens användaragent.
  • comment_type: Kommentaren är typ om det är en pingback eller a spåra tillbaka.
  • comment_parent: För nestade kommentarer är detta föräldrars kommentarens ID. Om det är den översta kommentaren kommer det att bli 0.
  • användar ID: 0 Om kommentarförfattaren inte är registrerad på webbplatsen, användarens ID annars.

Låt oss se parametrarna för WP_Comment_Query klass nu.

Parametrar för WP_Comment_Query-klassen

Det finns 34 parametrar vi kan använda med WP_Comment_Query, men låt dem inte skrämma dig: Du kan redan känna igen dem från deras namn, och de andra är lika lätta att förklara och använda.

  • AUTHOR_EMAIL (sträng): Kommentar författarens e-postadress.
  • author__in (array): Författar-ID för att inkludera i frågan.
  • author__not_in (array): Författar-ID för att utesluta från frågan.
  • post_author__in (array): Samma som author__in.
  • post_author__not_in (array): Samma som author__not_in.
  • include_unapproved (array): En rad användar-ID eller e-postadresser vars kommentarer ska returneras oberoende av deras godkännandestatus.
  • fält (sträng): Kommentarfält för att återvända. accepterar 'ids' bara används för att returnera endast kommentar-ID-erna.
  • comment__in (array): Kommentera ID för att inkludera i frågan.
  • comment__not_in (array): Kommentar-ID för att utesluta från frågan.
  • karma (heltal): Karma-poängen för att returnera matchande kommentarer för. (Kom ihåg comment_karma från föregående avsnitt?)
  • siffra (heltal): Maximalt antal kommentarer att returnera.
  • offset (heltal): Antalet kommentarer som ska skickas över i frågan.
  • sortera efter (sträng eller array): En kommentarstatus eller en rad statuser för att beställa sökresultatet. Accepterar alla nycklar som returneras från fråga() metod, plus 'Meta_value', 'Meta_value_num', värdet av $ meta_key, FALSK, tom array eller 'ingen'. (De tre sista inaktivera SORTERA EFTER klausul i frågan.)
  • ordning (sträng): Så här beställer du hämtade kommentarer-'ASC' för stigande eller 'DESC' för nedstigning. (Standard: 'DESC')
  • förälder (heltal): Föräldrars kommentar ID för att hämta barn.
  • post_id (heltal): Post ID för att hämta kommentarer. (Standard: 0)
  • post__in (array): Post IDs att inkludera i resultaten.
  • post__not_in (array): Post-ID för att utesluta från resultaten.
  • post_author (heltal): Författarens ID för att begränsa resultaten med.
  • POST_NAME (sträng): Post slug för att få kommentarer från.
  • post_parent (heltal): Föräldrapost-ID för att få kommentarer från.
  • post_type (sträng): Inläggstyp för att få kommentarer från.
  • post_status (sträng): Skicka status för att få kommentarer från.
  • status (sträng): Kommentera status för att begränsa resultaten med. accepterar 'håll', 'godkänna', 'Allt' eller en anpassad kommentarstatus. (Standard: 'Allt')
  • typ (sträng eller array): En kommentarstyp eller en rad kommentartyper för att filtrera frågan. accepterar 'kommentar', 'ping' (vilket betyder att pingbacks och trackbacks kombineras) eller anpassade kommentartyper.
  • Skriv in (array): Kommentarstyper att inkludera i frågan.
  • type__not_in (array): Kommentarstyper att utesluta från frågan.
  • användar ID (heltal): Användar-ID för att inkludera kommentarer från en specifik användare.
  • Sök (sträng): Sökord för att få matchande kommentarer för.
  • räkna (booleska): Returnera kommentarräkningen (SANN) eller en rad kommentarer (FALSK). (Standard: FALSK)
  • meta_key (sträng): En anpassad metatangent för att endast inkludera matchande kommentarer.
  • meta_value (sträng): Ett anpassat metavärde för att endast inkludera matchande kommentarer.
  • meta_query (array): En uppsättning av WP_Meta_Query klausuler (som vi ser i nästa del av denna serie).
  • date_query (array): En uppsättning av WP_Date_Query klausuler (som vi ser i nästa del av denna serie). (Standard: NULL)

Notera: Standardvärdena för alla parametrar är tomma, om inte annat anges ovan.

Ett snabbt exempel för att förstå hur WP_Comment_Query fungerar

Det skulle inte kännas som a komplett handledning om vi inte såg hur det fungerar, skulle det? Låt oss tänka på ett enkelt scenario och gör ett snabbt exempel då.

Låt oss säga att du kommer att lista de kommentarer som gjorts av postens författare och beställa listan enligt kommentar-ID (istället för kommenteringsdatum). Här är vad du gör:

post-> post_author; // Inställningsargument. $ args = array ('user_id' => $ post_author_id, 'orderby' => 'comment_ID'); // Anpassad kommentarfråga. $ my_comment_query = nytt WP_Comment_Query; $ comments = $ my_comment_query-> fråga ($ args); // Kontrollera efter kommentarer. om ($ kommentarer) // Börja notera kommentarer. eko "
    '; // Gå över kommentarer. foreach ($ kommentarer som $ kommentar) echo '
  • '. $ comment-> comment_content. '
  • '; // Sluta notera kommentarer. eko "
'; else // Visa meddelande om inga kommentarer hittades. eko "

'. __ ('Författaren lämnade inga kommentarer.', 'Tutsplus'). '

'; ?>

Snabbtips: Om du vill skapa kommentarerfrågor men vill använda en GUI istället för att skriva kod kan du använda GenerateWP: s WP_Comment_Query Generator.

Wrapping allt upp

Som sagt, kommer vi till slutet av denna serie. I nästa del kommer vi att lära oss om WP_Meta_Query och WP_Date_Query klasser tillsammans.

Har du något att lägga till i den här artikeln? Dela dina tankar med oss ​​i avsnittet Kommentarer nedan. Och om du gillade artikeln, glöm inte att dela den med dina vänner.

Om du är intresserad av några skript och plugins som kan ge dig mer avancerad funktionalitet med ditt kommentarsystem, finns det en användbar samling objekt på Envato Market.