Using WordPress ‘comments_template_top_level_query_args’ PHP filter

The comments_template_top_level_query_args WordPress PHP filter allows you to modify the arguments used in the top level comments query.

Usage

add_filter('comments_template_top_level_query_args', 'your_custom_function');
function your_custom_function($top_level_args) {
    // your custom code here
    return $top_level_args;
}

Parameters

  • $top_level_args (array): The top level query arguments for the comments template, which includes:
    • count (bool): Whether to return a comment count.
    • orderby (string|array): The field(s) to order by.
    • post_id (int): The post ID.
    • status (string|array): The comment status to limit results by.

More information

See WordPress Developer Resources: comments_template_top_level_query_args

Examples

Change orderby to ‘comment_date’

Modify the query to order comments by the comment date.

add_filter('comments_template_top_level_query_args', 'change_orderby_to_comment_date');
function change_orderby_to_comment_date($top_level_args) {
    $top_level_args['orderby'] = 'comment_date';
    return $top_level_args;
}

Order comments by author email

Order comments by the author’s email address.

add_filter('comments_template_top_level_query_args', 'order_by_author_email');
function order_by_author_email($top_level_args) {
    $top_level_args['orderby'] = 'comment_author_email';
    return $top_level_args;
}

Limit comments to approved status

Display only approved comments in the comments template.

add_filter('comments_template_top_level_query_args', 'limit_comments_to_approved_status');
function limit_comments_to_approved_status($top_level_args) {
    $top_level_args['status'] = 'approve';
    return $top_level_args;
}

Display comments count only

Show the total number of comments for a post without displaying the actual comments.

add_filter('comments_template_top_level_query_args', 'display_comments_count_only');
function display_comments_count_only($top_level_args) {
    $top_level_args['count'] = true;
    return $top_level_args;
}

Set comments per page

Set a custom number of comments to display per page.

add_filter('comments_template_top_level_query_args', 'set_comments_per_page');
function set_comments_per_page($top_level_args) {
    $top_level_args['number'] = 10;
    return $top_level_args;
}