Alter the Main WP_Comment_Query (comments at the bottom of posts)?

My plugin retrieves a few comments at the beginning of the post through my own WP_Comment_Query. I save these IDs so I can then alter the WP_Comment_Query request and not fetch these IDs.

When I use the pre_get_comments hook to hide these already-fetched IDs, they are also hidden from my first query at the beginning of each post. It defies the point.

Read More
$this->loader->add_action( 'pre_get_comments', $plugin_public, 'hide_the_comments' );

public function hide_the_comments( $comment_query ) {

    $comment_query->query_vars['comment__not_in'] = $the_ids_to_hide;
}

How can we target the bottom request only, just like there is is_main_query() for the post loop?

Related posts

2 comments

    • Create a private variable, eg private $count = 0;
    • Increment it each time your function is run
    • Don’t hide the comments if it’s the first time you’re running it 🙂
  1. If you need to target the “main” WP_Query_Comments() within the comments_template() core function, then the comments_template_query_args filter is available since WordPress 4.5:

    $comment_args = apply_filters( 'comments_template_query_args', $comment_args );
    $comment_query = new WP_Comment_Query( $comment_args );
    

    See ticket #34442 for more info and a simple example here.

Comments are closed.