One of the greatest disruptions to the conversation that goes on in comments are the trackbacks. They’re great, and I love it when people link to my blog. I always want to separate them because they really detract from the discussions that my readers are having, and they sometimes can make it difficult for a new reader to follow. How about you? This tutorial will show you how to separate Trackbacks/Pings and Comments in WordPress

What is the Difference Between a Comment and a Trackback?
A comment is an interaction between a reader and the blogger about the blog post. A trackback is a link to this post published on another blog post.

The thing it, it’s a little bit different in WordPress 2.7+ than in previous versions, so I had to look up how to split the comments from trackbacks. I started off by making some modifications to the comments.php and functions.php files. Now, comments show up on top, and trackbacks show up below.

The comments loop in Wordpress 2.7+

<?php if ( have_comments() ) : ?>
<h3 id="comments"><?php comments_number('No Responses', 'One Response', '% Responses' );?> to “<?php the_title(); ?>”</h3>
<ol class="commentlist">
        <?php wp_list_comments(); ?>
        </ol>
<div class="navigation">
<div class="alignleft"><?php previous_comments_link() ?></div>
<div class="alignright"><?php next_comments_link() ?></div>
</div>
<?php else : // this is displayed if there are no comments so far ?>
        <?php if ('open' == $post->comment_status) : ?>
                <!-- If comments are open, but there are no comments. -->
        <?php else : // comments are closed ?>
                <!-- If comments are closed. -->
<p class="nocomments">Comments are closed.
        <?php endif; ?>
<?php endif; ?>

As you can see it is much simpler than the old comments “loop”. The majority of everything that is happening is now done via the function wp_list_comments.
To show separate trackbacks and pingbacks on a page in Wordpress 2.7 or above, you can change the code in the default comments.php with the following:

Remove pingbacks and trackbacks in comments list

  1. Open comments.php then find
    <?php if ( have_comments() ) : ?>
  2. Add the following codes after it:
    <?php if ( ! empty($comments_by_type['comment']) ) : ?>
  3. Then find
    <?php wp_list_comments(); ?>
  4. Make it change like this
    <?php wp_list_comments('type=comment'); ?>

    last step is write this code below after the wp_list_comments function.

    </ol><?php endif; ?>

Display pingbacks and trackbacks

You can do it with similar previous step about

<?php if ( ! empty($comments_by_type['pings']) ) : ?>
<h3 id="pings">Trackbacks/Pingbacks</h3>
<ol class="commentlist">
<?php wp_list_comments('type=pings'); ?>
</ol>
<?php endif; ?>

Now we need to style the pingbacks and trackbacks list by add new functions to functions.php

  1. Make change
    <?php comments_template(); ?>

    to

    <?php comments_template('', true); ?>

    in single.php

  2. Add new functions to functions.php
    <?php
        function list_pings($comment, $args, $depth) {
               $GLOBALS['comment'] = $comment;
        ?>
                <li id="comment-<?php comment_ID(); ?>"><?php comment_author_link(); ?>
        <?php } ?>

You need to call $listping functions (new style of list pingbacks) in single.php

<ol class="pinglist">
<?php wp_list_comments('type=pings&callback=list_pings'); ?>

Full loop code below

<?php if ( have_comments() ) : ?>
	<?php if ( ! empty($comments_by_type['comment']) ) : ?>
	<h3 id="comments"><?php comments_number('No Responses', 'One Response', '% Responses' );?> to &#8220;<?php the_title(); ?>&#8221;</h3>

	<ol class="commentlist">
	<?php wp_list_comments('type=comment'); ?>
	</ol>
	<?php endif; ?>

	<?php if ( ! empty($comments_by_type['pings']) ) : ?>
	<h3 id="pings">Trackbacks/Pingbacks</h3>
       <?php
           function list_pings($comment, $args, $depth) {
           $GLOBALS['comment'] = $comment;
       ?>
            <li id="comment-<?php comment_ID(); ?>"><?php comment_author_link(); ?>
       <?php } ?>
	<ol class="pinglist">
	<?php wp_list_comments('type=pings&callback=list_pings'); ?>
	</ol>
	<?php endif; ?>

	<div class="navigation">
		<div class="alignleft"><?php previous_comments_link() ?></div>
		<div class="alignright"><?php next_comments_link() ?></div>
	</div>
 <?php else : // this is displayed if there are no comments so far ?>

	<?php if ('open' == $post->comment_status) : ?>
		<!-- If comments are open, but there are no comments. -->

	<?php else : // comments are closed ?>
		<!-- If comments are closed. -->
		<p class="nocomments">Comments are closed.</p>

	<?php endif; ?>
<?php endif; ?>

This is how we have separated the trackbacks/pingbacks from comments, hidden the trackbacks and styled our comments in WordPress 2.7.