We komen bijna aan het einde van onze serie 'Mastering' WP_Query
", en het is tijd om de broers en zussen van de WP_Query
klasse. In het vorige deel zijn we overgegaan WP_User_Query
, en in dit artikel gaan we leren over de WP_Comment_Query
klasse.
Laten we beginnen!
Geïntroduceerd in WordPress versie 3.1, de WP_Comment_Query
klasse doet bijna al het zware werk bij het bevragen van opmerkingen in WordPress. Hiermee kunnen twee databasetabellen worden opgevraagd, wp_comments
en wp_commentmeta
, in essentie.
Hier is de skelet van een commentaarquery-lus met behulp van de WP_Comment_Query
klasse:
query ($ args); if ($ comments) foreach ($ comments as $ comment) // Doe wat je doet voor elke reactie hier. else // Bericht weergeven omdat er geen opmerkingen zijn. ?>
Best gemakkelijk, toch? We zullen een paar stappen later een voorbeeld nemen, maar laten we eerst onder de motorkap kijken.
Omdat er niet veel eigenschappen (openbare variabelen van de klasse) en methoden (openbare functies van de klas) zijn, zal ik er snel over gaan in twee mini-secties. Daar gaan we!
anders WP_Query
die meer dan 30 eigenschappen heeft (25 daarvan zijn de equivalenten voor voorwaardelijke tags), de WP_Comment_Query
klasse heeft slechts vijf eigenschappen:
$ verzoek
: Een tekenreeks die de SQL-query bevat.$ meta_query
: Een array om een "metaquery" te maken met behulp van de WP_Meta_Query
klasse.$ date_query
: Een array om een "datumquery" te maken met behulp van de WP_Date_Query
klasse.$ query_vars
: Een array van variabelen van de query.$ reacties
: Een reeks opmerkingen opgehaald met de query.Ja, er is maar één methode om te gebruiken met de WP_Comment_Query
klasse, en de naam van die methode is vraag ()
.
De vraag ()
methode voert in principe de query uit, met behulp van de parameters die we in de volgende sectie zullen doornemen; maar laten we eens kijken wat we in een array krijgen als we deze methode gebruiken:
comment_ID
: De ID van de opmerking.comment_post_ID
: Het bericht-ID waarop de opmerking is gemaakt.COMMENT_AUTHOR
: De naam van de auteur van de opmerking.comment_author_email
: Het e-mailadres van de auteur van de reactie.comment_author_url
: De URL van de website van de auteur van de reactie.comment_author_IP
: Het IP-adres van de opmerking.COMMENT_DATE
: De opmerking datum.comment_date_gmt
: De opmerking in GMT-tijdnotatie.COMMENT_CONTENT
: De inhoud van de opmerking.comment_karma
: Een ongebruikt databaseveld voor elke commentaar-plug-in kan dit gebruiken om het karma van de opmerking op te slaan.comment_approved
: De goedkeuringsstatus van de opmerking.comment_agent
: De user-agent van de comment-auteur.comment_type
: Het type van de opmerking als het een is pingback
of a trackback
.comment_parent
: Voor geneste opmerkingen is dit de ID van de bovenliggende opmerking. Als dit de commentaar op het hoogste niveau is, zal dit zijn 0
.gebruikersnaam
: 0
als de auteur van de opmerking niet geregistreerd is bij de website, anders de ID van de gebruiker.Laten we de parameters van de WP_Comment_Query
klasse nu.
Er zijn 34 parameters waarmee we kunnen werken WP_Comment_Query
, maar laat ze je niet laten schrikken: je kunt ze al herkennen aan hun namen, en de anderen zijn even gemakkelijk uit te leggen en te gebruiken.
author_email
(string): het e-mailadres van de auteur van de opmerking.author__in
(array): auteurs-ID's die in de query moeten worden opgenomen.author__not_in
(array): auteurs-ID's om uit te sluiten van de query.post_author__in
(array): Hetzelfde als author__in
.post_author__not_in
(array): Hetzelfde als author__not_in
.include_unapproved
(array): een array met gebruikers-ID's of e-mailadressen waarvan de opmerkingen moeten worden geretourneerd, ongeacht hun goedkeuringsstatus.velden
(string): opmerkingenvelden om terug te keren. accepteert 'Ids'
alleen gebruikt om alleen de opmerking-ID's te retourneren.comment__in
(array): commentaar-ID's die in de query moeten worden opgenomen.comment__not_in
(array): commentaar-ID's die moeten worden uitgesloten van de query.karma
(integer): de "karma" -score om overeenkomende opmerkingen voor te retourneren. (Onthouden comment_karma
van de vorige sectie?)aantal
(integer): het maximumaantal reacties dat moet worden geretourneerd.compenseren
(integer): het aantal opmerkingen dat in de query moet worden doorgegeven.orderby
(string of array): een reactiestatus of een reeks statussen om de queryresultaten te bestellen. Accepteert alle sleutels die worden geretourneerd door de vraag ()
methode, plus 'Meta_value'
, 'Meta_value_num'
, waarde van $ meta_key
, VALSE
, lege array of 'geen'
. (De laatste drie uitschakelen de BESTELLING DOOR
clausule in de query.)bestellen
(string): Hoe opgehaalde opmerkingen kunnen worden geplaatst-'ASC'
voor oplopend of 'DESC'
voor afdalen. (Standaard: 'DESC'
)ouder
(integer): ID van oudercommentaar om kinderen op te halen.post_id
(integer): post ID om reacties op te halen. (Standaard: 0
)posten in
(array): bericht-ID's die in de resultaten moeten worden opgenomen.post__not_in
(array): berichten plaatsen om uit te sluiten van de resultaten.post_author
(integer): plaats de ID van de auteur om de resultaten te beperken met.POST_NAME
(string): Post slug om reacties van te ontvangen.post_parent
(integer): bovenliggende bericht-ID om opmerkingen van te ontvangen.post_type
(string): Berichttype om reacties van te ontvangen.post_status
(string): Post status om reacties van te ontvangen.staat
(string): Commentaar status om resultaten te beperken met. accepteert 'houden'
, 'goedkeuren'
, 'allemaal'
of een aangepaste reactiestatus. (Standaard: 'allemaal'
)type
(tekenreeks of matrix): een opmerkingstype of een reeks opmerkingenstypen om de query te filteren. accepteert 'commentaar'
, 'Pings'
(dit betekent pingbacks en trackbacks gecombineerd), of aangepaste reactietypes.typ in
(array): opmerkingen die moeten worden opgenomen in de query.type__not_in
(array): opmerkingen die moeten worden uitgesloten van de query.gebruikersnaam
(integer): Gebruikers-ID om opmerkingen van een specifieke gebruiker op te nemen.zoeken
(string): zoektermen om overeenkomende opmerkingen voor te krijgen.tellen
(boolean): retourneer het aantal reacties (TRUE
) of een reeks opmerkingen (VALSE
). (Standaard: VALSE
)meta_key
(string): een aangepaste meta-sleutel om alleen overeenkomende opmerkingen toe te voegen.meta_value
(string): een aangepaste metawaarde die alleen overeenkomende opmerkingen bevat.meta_query
(array): een array van WP_Meta_Query
clausules (die we in het volgende deel van deze serie zullen zien).date_query
(array): een array van WP_Date_Query
clausules (die we in het volgende deel van deze serie zullen zien). (Standaard: NUL
)Notitie: De standaardwaarden van alle parameters zijn leeg, tenzij anders vermeld hierboven.
Het zou niet als een voelen compleet tutorial als we niet gezien hebben hoe het werkt, toch? Laten we een eenvoudig scenario bedenken en dan een snel voorbeeld geven.
Laten we zeggen dat u de opmerkingen van de auteur van het bericht gaat opsommen en de lijst bestelt op commentaar-ID's (in plaats van op reactiedata). Dit is wat je doet:
post-> post_author; // Setup-argumenten. $ args = array ('user_id' => $ post_author_id, 'orderby' => 'comment_ID'); // Aangepaste opmerking query. $ my_comment_query = nieuwe WP_Comment_Query; $ comments = $ my_comment_query-> query ($ args); // Controleer op opmerkingen. if ($ comments) // Start aanbieding opmerkingen. echo '
'. __ ('De auteur van het bericht heeft geen opmerkingen geplaatst.', 'Tutsplus'). '
'; ?>Snelle tip: Als u commentaarquery's wilt maken maar een GUI wilt gebruiken in plaats van code in te voeren, kunt u GenerateWP's gebruiken WP_Comment_Query
Generator.
Zoals ik al zei, we komen aan het einde van deze serie. In het volgende deel gaan we leren over de WP_Meta_Query
en WP_Date_Query
klassen samen.
Heb je iets toe te voegen aan dit artikel? Deel uw mening met ons in het gedeelte Opmerkingen hieronder. En als je het artikel leuk vond, vergeet dan niet om het met je vrienden te delen.
Als je geïnteresseerd bent in een paar scripts en plug-ins die je meer geavanceerde functionaliteit kunnen geven met je reactiesysteem, is er een handige verzameling items op Envato Market.