Mastering WP_Comment_Query

Vi kommer nesten til slutten av serien vår, "Mastering WP_Query", og det er på tide å introdusere søskenene til WP_Query klasse. I forrige del gikk vi over WP_User_Query, og i denne artikkelen skal vi lære om WP_Comment_Query klasse.

La oss begynne!

Hva er WP_Comment_Query?

Introdusert i WordPress versjon 3.1, den WP_Comment_Query klassen gjør nesten alt det harde arbeidet med å spørre kommentarer i WordPress. Det tillater spørring av to databasetabeller, wp_comments og wp_commentmeta, i hovedsak.

Her er skjelett av en kommentarsøksløype ved hjelp av WP_Comment_Query klasse:

spørring ($ args); hvis ($ kommentarer) foreach ($ kommentarer som $ kommentar) // Gjør hva du gjør for hver kommentar her.  else // Vis melding fordi det ikke er noen kommentarer. ?>

Ganske enkelt, ikke sant? Vi kommer til å gjøre et eksempel bare noen få skritt senere, men la oss se under hetten først.

Egenskaper og metoder for WP_Comment_Query Class

Siden det ikke er mange egenskaper (offentlige variabler i klassen) og metoder (offentlige funksjoner i klassen), går jeg raskt over dem i to mini-seksjoner. Her går vi!

Egenskaper for WP_Comment_Query

I motsetning til WP_Query som har mer enn 30 egenskaper (25 av dem er ekvivalenter for betingede etiketter), WP_Comment_Query klassen har bare fem egenskaper:

  • $ forespørsel: En streng som inneholder SQL-spørringen.
  • $ meta_query: En matrise for å lage en "meta query" ved hjelp av WP_Meta_Query klasse.
  • $ date_query: En matrise for å lage en "dato forespørsel" ved hjelp av WP_Date_Query klasse.
  • $ query_vars: En rekke variabler av spørringen.
  • $ kommentarer: En rekke kommentarer hentet med spørringen.

Den eneste metoden for WP_Comment_Query

Ja, det er bare en metode å bruke med WP_Comment_Query klassen, og navnet på denne metoden er spørsmål().

De spørsmål() Metoden utfører i utgangspunktet spørringen, ved hjelp av parametrene som vi skal gjennomgå i neste avsnitt; men la oss se hva vi får i en matrise når vi bruker denne metoden:

  • comment_ID: Kommentarens ID.
  • comment_post_ID: Postens ID som kommentaren er laget til.
  • COMMENT_AUTHOR: Kommentarens forfatters navn.
  • comment_author_email: Kommentarforfatterens e-postadresse.
  • comment_author_url: Kommentarforfatterens nettadresse.
  • comment_author_IP: Kommentarens IP-adresse.
  • COMMENT_DATE: Kommentar dato.
  • comment_date_gmt: Kommentar i GMT tidsformat.
  • COMMENT_CONTENT: Innholdet i kommentaren.
  • comment_karma: Et ubrukt databasefelt for hver kommentar-plugin kan bruke dette til å lagre, vel, kommentarens karma.
  • comment_approved: Kommentarens godkjenningsstatus.
  • comment_agent: Kommentarforfatterens brukeragent.
  • comment_type: Kommentaren er typen hvis den er en Pingback eller a spore tilbake.
  • comment_parent: For nestede kommentarer, er dette opphavsrettens ID. Hvis det er toppnivån, vil dette være 0.
  • bruker-ID: 0 hvis kommentarforfatteren ikke er registrert på nettstedet, brukerens ID ellers.

La oss se parametrene til WP_Comment_Query klassen nå.

Parametre i WP_Comment_Query Class

Det er 34 parametere vi kan bruke med WP_Comment_Query, men la dem ikke skremme deg: Du kan allerede kjenne dem fra navnene sine, og de andre er like lette å forklare og bruke.

  • author_email (streng): Kommentar forfatterens e-postadresse.
  • author__in (array): Forfatter-IDer som skal inkluderes i spørringen.
  • author__not_in (array): Forfatter-IDer for å ekskludere fra spørringen.
  • post_author__in (array): Samme som author__in.
  • post_author__not_in (array): Samme som author__not_in.
  • include_unapproved (array): En rekke bruker-IDer eller e-postadresser hvis kommentarer skal returneres uavhengig av godkjenningsstatus.
  • Enger (streng): Kommentarfelt å returnere. godtar 'ids' Bare brukt til å returnere bare kommentar-IDene.
  • comment__in (array): Kommentar ID-er for å inkludere i spørringen.
  • comment__not_in (array): Kommentar ID-er for å ekskludere fra spørringen.
  • karma (heltall): Karma-poengsummen for å returnere matchende kommentarer til. (Huske comment_karma fra forrige seksjon?)
  • Nummer (heltall): Maksimalt antall kommentarer å returnere.
  • offset (heltall): Antall kommentarer som skal overføres i spørringen.
  • rekkefølge etter (streng eller array): En kommentarstatus eller en rekke statuser for å bestille søkeresultatene. Godtar alle nøklene som returneres fra spørsmål() metode, pluss 'Meta_value', 'Meta_value_num', verdien av $ meta_key, FALSK, tom rekkefølge eller 'ingen'. (De siste tre deaktiverer REKKEFØLGE ETTER klausul i spørringen.)
  • rekkefølge (streng): Slik bestiller du hentede kommentarer-'ASC' for stigende eller 'DESC' for nedstigning. (Misligholde: 'DESC')
  • forelder (heltall): Foreldrekommenters ID for å hente barn.
  • POST_ID (heltall): Legg inn ID for å hente kommentarer. (Misligholde: 0)
  • post__in (array): Legg inn ID-er for å inkludere i resultatene.
  • post__not_in (array): Legg inn IDer for å ekskludere fra resultatene.
  • post_author (heltall): Postforfatterens ID for å begrense resultatene etter.
  • POST_NAME (streng): Legg inn slug for å få kommentarer fra.
  • post_parent (heltall): Foreldrepost-ID for å få kommentarer fra.
  • post_type (streng): Posttype for å få kommentarer fra.
  • post_status (streng): Legg inn status for å få kommentarer fra.
  • status (streng): Kommentarstatus for å begrense resultatene etter. godtar 'holde', 'Godkjenne', 'alle' eller en tilpasset kommentarstatus. (Misligholde: 'alle')
  • type (streng eller array): En kommentartype eller en rekke kommentartyper for å filtrere spørringen. godtar 'kommentar', 'ping' (som betyr pingbacks og trackbacks kombinert), eller tilpassede kommentartyper.
  • Skriv inn (array): Kommentarstyper som skal inkluderes i spørringen.
  • type__not_in (array): Kommentar typer for å ekskludere fra spørringen.
  • bruker-ID (heltall): Bruker-ID for å inkludere kommentarer fra en bestemt bruker.
  • Søke (streng): Søkeord for å få matchende kommentarer til.
  • telle (boolsk): Gi tilbakemeldingstellingen (EKTE) eller en rekke kommentarer (FALSK). (Misligholde: FALSK)
  • meta_key (streng): En egendefinert metatast for kun å inkludere samsvarende kommentarer.
  • meta_value (streng): En tilpasset metaværdi for å bare inkludere samsvarende kommentarer.
  • meta_query (array): En rekke av WP_Meta_Query klausuler (som vi ser i neste del av denne serien).
  • date_query (array): En rekke av WP_Date_Query klausuler (som vi ser i neste del av denne serien). (Misligholde: NULL)

Merk: Standardverdiene for alle parametrene er tomme, med mindre annet er angitt ovenfor.

Et raskt eksempel å forstå hvordan WP_Comment_Query fungerer

Det ville ikke føles som en fullstendig opplæring om vi ikke så hvordan det fungerer, ville det? La oss tenke på et enkelt scenario og gjøre et raskt eksempel, da.

La oss si at du skal liste opp kommentarene fra postens forfatter og bestille listen etter kommentar-IDer (i stedet for kommentar datoer). Her er hva du gjør:

etter> post_author; // Oppsett argumenter. $ args = array ('user_id' => $ post_author_id, 'orderby' => 'comment_ID'); // Tilpasset kommentarforespørsel. $ my_comment_query = nytt WP_Comment_Query; $ comments = $ my_comment_query-> spørring ($ args); // Sjekk etter kommentarer. hvis ($ kommentarer) // Start oppføring kommentarer. ekko '
    '; // Loop over kommentarer. foreach ($ kommentarer som $ kommentar) echo '
  • '. $ comment-> comment_content. '
  • '; // Stopp oppføring av kommentarer. ekko '
'; ellers // Vis melding hvis ingen kommentarer er funnet. ekko '

'. __ ('Postforfatteren har ikke postet noen kommentarer.', 'Tutsplus'). '

'; ?>

Raskt tips: Hvis du vil bygge kommentarforespørsler, men vil bruke en GUI i stedet for å skrive kode, kan du bruke GenerateWPs WP_Comment_Query Generator.

Wrapping Everything Up

Som sagt, kommer vi til slutten av denne serien. I neste del skal vi lære om WP_Meta_Query og WP_Date_Query klasser sammen.

Har du noe å legge til i denne artikkelen? Del dine tanker med oss ​​i kommentarfeltet nedenfor. Og hvis du likte artikkelen, ikke glem å dele den med vennene dine.

Hvis du er interessert i noen få skript og plugins som kan gi deg mer avansert funksjonalitet med kommentarsystemet, er det en nyttig samling av varer på Envato Market.