WordPress.org

Codex

Attention Interested in functions, hooks, classes, or methods? Check out the new WordPress Code Reference!

Function Reference/get comments

Description

Retrieve a list of comments.

Usage

<?php get_comments$args ); ?>

Default Usage

<?php 

$defaults = array(
	'author_email' => '',
	'author__in' => '',
	'author__not_in' => '',
	'include_unapproved' => '',
	'fields' => '',
	'ID' => '',
	'comment__in' => '',
	'comment__not_in' => '',
	'karma' => '',
	'number' => '',
	'offset' => '',
	'orderby' => '',
	'order' => 'DESC',
	'parent' => '',
	'post_author__in' => '',
	'post_author__not_in' => '',
	'post_ID' => '', // ignored (use post_id instead)
	'post_id' => 0,
	'post__in' => '',
	'post__not_in' => '',
	'post_author' => '',
	'post_name' => '',
	'post_parent' => '',
	'post_status' => '',
	'post_type' => '',
	'status' => 'all',
	'type' => '',
        'type__in' => '',
        'type__not_in' => '',
	'user_id' => '',
	'search' => '',
	'count' => false,
	'meta_key' => '',
	'meta_value' => '',
	'meta_query' => '',
	'date_query' => null, // See WP_Date_Query
);

?>

Parameters

$author_email
(string) (optional) Comment author email address.
Default: empty
$author__in
(array) (optional) Array of author IDs to include comments for.
Default: empty
$author__not_in
(array) (optional) Array of author IDs to exclude comments for.
Default: empty
$comment__in
(array) (optional) Array of comment IDs to include.
Default: empty
$comment__not_in
(array) (optional) Array of comment IDs to exclude.
Default: empty
$count
(bool) (optional) Whether to return a comment count (true) or array of comment objects (false).
Default: false
$date_query
(array) (optional) Date query clauses to limit comments by. See WP_Date_Query.
Default: null
$fields
(string) (optional) Comment fields to return. Accepts 'ids' for comment IDs only or empty for all fields.
Default: empty
$ID
(int) (optional) Currently unused.
Default: None
$include_unapproved
(array) (optional) Array of IDs or email addresses of users whose unapproved comments will be returned by the query regardless of $status.
Default: empty
$karma
(int) (optional) Karma score to retrieve matching comments for.
Default: empty
$meta_key
(string) (optional) Include comments with a matching comment meta key.
Default: empty
$meta_value
(string) (optional) Include comments with a matching comment meta value. Requires $meta_key to be set.
Default: empty
$meta_query
(array) (optional) Meta query clauses to limit retrieved comments by. See WP_Meta_Query.
Default: empty
$number
(int) (optional) Maximum number of comments to retrieve.
Default: null (no limit)
$offset
(int) (0) Number of comments to offset the query. Used to build LIMIT clause.
Default: None
$orderby
(string_array) (optional) Comment status or array of statuses. To use 'meta_value' or 'meta_value_num', $meta_key must also be defined. To sort by a specific $meta_query clause, use that clause's array key.
  • comment_agent
  • comment_approved
  • comment_author
  • comment_author_email
  • comment_author_IP
  • comment_author_url
  • comment_content
  • comment_date
  • comment_date_gmt
  • comment_ID
  • comment_karma
  • comment_parent
  • comment_post_ID
  • comment_type
  • user_id
  • meta_value
  • meta_value_num
  • the value of $meta_key
  • and the array keys of $meta_query
  • Also accepts false, an empty array, or 'none' to disable ORDER BY clause
  • Default: comment_date_gmt
$order
(string) (optional) How to order retrieved comments. Accepts
  • ASC
  • DESC
  • .
    Default: 'DESC'.
$parent
(int) (optional) Parent ID of comment to retrieve children of.
Default: empty
$post_author__in
(array) (optional) Array of author IDs to retrieve comments for.
Default: empty
$post_author__not_in
(array) (optional) Array of author IDs *not* to retrieve comments for.
Default: empty
$post_ID
(int) (optional) Currently unused
Default: None
$post_id
(int) (optional) Limit results to those affiliated with a given post ID.
Default: 0
$post__in
(array) (optional) Array of post IDs to include affiliated comments for.
Default: empty
$post__not_in
(array) (optional) Array of post IDs to exclude affiliated comments for.
Default: empty
$post_author
(int) (optional) Comment author ID to limit results by.
Default: empty
$post_status
(string) (optional) Post status to retrieve affiliated comments for.
Default: empty
$post_type
(string) (optional) Post type to retrieve affiliated comments for.
Default: empty
$post_name
(string) (optional) Post name to retrieve affiliated comments for.
Default: empty
$post_parent
(int) (optional) Post parent ID to retrieve affiliated comments for.
Default: empty
$search
(string) (optional) Search term(s) to retrieve matching comments for.
Default: empty
$status
(string) ('all') optional
Default: None
$type
(string_array) (optional) Include comments of a given type, or array of types. Accepts 'comment', 'pings' (includes 'pingback' and 'trackback'), or any custom type string.
Default: empty
$type__in
(array) (optional) Include comments from a given array of comment types.
Default: empty
$type__not_in
(array) (optional) Exclude comments from a given array of comment types.
Default: empty
$user_id
(int) (optional) Include comments for a specific user ID.
Default: empty

Returns

(Object) 
Comment fields with the following properties (or an empty array if there are no comments):
comment_ID 
(integer) The comment ID
comment_post_ID 
(integer) The ID of the post/page that this comment responds to
comment_author 
(string) The comment author's name
comment_author_email 
(string) The comment author's email
comment_author_url 
(string) The comment author's webpage
comment_author_IP 
(string) The comment author's IP
comment_date 
(string) The datetime of the comment (YYYY-MM-DD HH:MM:SS)
comment_date_gmt 
(string) The GMT datetime of the comment (YYYY-MM-DD HH:MM:SS)
comment_content 
(string) The comment's content
comment_karma 
(integer) The comment's karma
comment_approved 
(string) The comment approval level (0, 1 or "spam")
comment_agent 
(string) The commenter's user agent (browser, operating system, etc.)
comment_type 
(string) The comment's type if meaningfull (pingback|trackback), empty for normal comments
comment_parent 
(string) The parent comment's ID for nested comments (0 for top level)
user_id 
(integer) The comment author's ID if s/he is registered (0 otherwise)

Examples

<?php 
$comments = get_comments('post_id=15');
foreach($comments as $comment) :
	echo($comment->comment_author);
endforeach;
?>

Show last 5 unapproved comments:

<?php
$args = array(
	'status' => 'hold',
	'number' => '5',
	'post_id' => 1, // use post_id, not post_ID
);
$comments = get_comments($args);
foreach($comments as $comment) :
	echo($comment->comment_author . '<br />' . $comment->comment_content);
endforeach;
?>

Show comment counts of a post:

<?php
$args = array(
	'post_id' => 1, // use post_id, not post_ID
        'count' => true //return only the count
);
$comments = get_comments($args);
echo $comments

?>


Show comment counts of a user:

<?php
$args = array(
	'user_id' => 1, // use user_id
        'count' => true //return only the count
);
$comments = get_comments($args);
echo $comments

?>

Show comments of a user:

<?php
$args = array(
	'user_id' => 1, // use user_id

);
$comments = get_comments($args);
foreach($comments as $comment) :
	echo($comment->comment_author . '<br />' . $comment->comment_content);
endforeach;

?>

Get comments from last 4 weeks:

         $args = array(
                        'date_query' => array(
                                                        'after' => '4 week ago',
                                                        'before' => 'tomorrow',
                                                        'inclusive' => true,
                                        ),    
                        );
        $posts = get_comments($args);

        foreach ($posts as $post) {
                // Output comments etc here
        }

Delete duplicate comments (same author and content):

<?php

// get all approved comments with empty number arg
$all_comments=get_comments( array('status' => 'approve', 'number'=>'') );

// array to hold comment ids that are dupes
$comment_ids_to_delete=array();

foreach($all_comments as $k=>$c)
{
	$kk=($k-1); // the previous comments index in all_comments array
	$pc=$all_comments[$kk]; // the previous comment object

	// if comment authors the same, and comment_content the same add to deletions array
	if($pc->comment_author == $c->comment_author && $pc->comment_content == $c->comment_content) {
		$comment_ids_to_delete[]=$pc->comment_ID; // previous comment id
	}
}

// delete the comment by id
foreach($comment_ids_to_delete as $k=>$v):
	wp_delete_comment($v);
endforeach;

?>

Source File

get_comments() is located in wp-includes/comment.php.

Related

See also index of Function Reference and index of Template Tags.