• Resolved yo go re

    (@yo-go-re)


    The previous plugin I was using to display comments had an option to only show the most recent comment on each post, whether it was new or a reply, and then a number in parentheses showing the total number of comments on that post – a super handy feature for drawing attention to more posts than just one that happened to be getting a lot of traffic. That was great, but judging by this post: https://www.ads-software.com/support/topic/show-comments-but-no-repeat-from-same-post/ that’s not possible here. Okay, fine, I can deal with that (though consider this an official request for a future feature; I mean, if it defaults to five and six people comment on a post, then that’s the only thing that’s ever going to be seen; set it to any number, and n+1 comments will always flood it).

    The reply says “You can exclude replies (i.e child comments) but this is done by default anyway by setting ‘threaded’ to false in the call to get_comments.” Is it? Because currently the plugin/widget are showing both initial comments AND replies. Assuming we have to use the text widget version in order to do this, what exactly do we put in the widget? Does it go inside the “format=” part?

Viewing 1 replies (of 1 total)
  • Hi,

    Thanks for getting in touch. I’ve reviewed the support thread you referred to and the plugin code.

    You’re quite right – the plugin shows both initial comments and replies. This is the same whether you use the shortcode or widget as both methods use the same underlying code to retrieve comments. This behaviour mimics the default Recent Comments widget built into WordPress, which also shows both top-level comments and replies.

    The reason for the confusion was because my original reply was based on reviewing the WordPress code, specifically the documentation for the hierarchical option in WP_Comment_Query:

    
    'hierarchical' - Whether to include comment descendants in the results.
    'threaded' returns a tree, with each comment's children stored in a
    <code>children</code> property on the <code>WP_Comment</code> object. 
    'flat' returns a flat array of found comments plus their children. Pass
    <code>false</code> to leave out descendants. Accepts 'threaded', 'flat', or
    false. Default: false.
    

    In the plugin we do not set the hierarchical option when fetching comments, therefore the default value false is used. I assumed from the documentation therefore that descendent comments (i.e. replies) would be omitted from the results. However my tests have confirmed this is NOT the case and replies are in fact included. So the inline documentation for WP_Comment_Query is not accurate (or is at least confusing) and I will be passing this on to the WordPress team.

    Returning to your question, it’s therefore not currently possible to hide comment replies with our plugin. However you could do this by adding some code to your site to filter the comment options passed to WP_Comment_Query. By setting parent to 0 you can exclude replies from the results, and only show top-level comments:

    
    add_filter( 'better_recent_comments_comment_args', function( $args ) {
        $args['parent'] = 0;
        return $args;
    } );
    

    As we’re now aware of this limitation, we will add this to our feature request list to enable in-built support for this. In the meantime, the only option would be to use the above code.

    Kind regards,
    Andy

    • This reply was modified 4 years, 3 months ago by Andy Keith.
    • This reply was modified 4 years, 3 months ago by Andy Keith.
Viewing 1 replies (of 1 total)
  • The topic ‘Only one comment per post’ is closed to new replies.