How To Check If A Post Has Comments, Pingbacks Or Trackbacks

WordPress has have_comments(); conditional tag to check if a post has comments in it. It’s easy to create a comments.php file for your theme to show comments using this tag, but there’s no such tag like this for checking if a post has pingbacks or trackbacks.

A theme which shows comments and pings in a different area makes a site more readable. Here’s how to check if a post has comments, pingbacks or trackbacks. And this snippet helps in checking if a post has pingbacks or trackbacks:

function acme_post_has( $type, $post_id ) {

$comments = get_comments('status=approve&type=' . $type . '&post_id=' . $post_id );
$comments = separate_comments( $comments );

return 0 < count( $comments[ $type ] );

}

You need to post the above function in your theme’s functions.php file.

Now you can check if a post has comments by adding:

if ( acme_post_has( 'comments', $post->ID ) ) { }

And you can check if the post has trackbacks and pingbacks by adding following:

if ( acme_post_has( 'pings', $post->ID ) ) { }

The type of comment(s) to display. Can be ‘all’, ‘comment’, ‘trackback’, ‘ping back’, or ‘pings’. ‘pings’ is both ‘trackback’ and ‘ping back’ together.

I recently used this function in a theme that was developing. That theme is currently under review, and if everything goes right we will soon see it on the WordPress.org.

If you found this post useful, share it with your friends:

Leave a Reply