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.