Is there any way to filter the comments that are In Reply from the comments list? I basically just want to see the depth 1 comments on a separate filter.
@GhostToast Ive added this to create a new filter ‘Ask’ on the Admin Comments Panel. is there a way to just apply your top level comments filter code to this Ask filter?
That would be really good because the All comments filter still works and the Ask is filtered by showing only the top level ones…
add_action( 'current_screen', 'wpse_72210_comments_exclude_lazy_hook', 10, 2 );
/**
* Delay hooking our clauses filter to ensure it's only applied when needed.
*/
function wpse_72210_comments_exclude_lazy_hook( $screen )
{
if ( $screen->id != 'edit-comments' )
return;
// Check if our Query Var is defined
if( isset( $_GET['ask'] ) )
add_action( 'pre_get_comments', 'wpse_63422_list_comments_from_specific_post', 10, 1 );
add_filter( 'comment_status_links', 'wpse_63422_new_comments_page_link' );
}
/**
* Only display comments of specific post_id
*/
function wpse_63422_list_comments_from_specific_post( $clauses )
{
$clauses->query_vars['post_id'] = 12;
}
/**
* Add link to specific post comments with counter
*/
function wpse_63422_new_comments_page_link( $status_links )
{
$count = get_comments( 'post_id=12&count=1' );
if( isset( $_GET['ask'] ) )
{
$status_links['all'] = 'All';
$status_links['ask'] = 'Ask ('.$count.')';
}
else
{
$status_links['ask'] = 'Ask ('.$count.')';
}
return $status_links;
}
In your comments loop, skip the children:
Edit: Above example would only help in the reading loop, below example should help in admin area:
Edit: Per your addendum to the original question, this would be how you put it all together. I’ve cleaned up your code a little and given the functions a cohesive name-space. This lumps the
filter
I gave you in with the condition of theask
query var being set: