WordPress 2.7 Enhanced Comments for Dummies

January 22nd, 2009

I, like many others, have recently upgraded to WordPress 2.7 because of all the added features.  My particular interest was in the enhanced comments which included threading and paging, but of course themes created before the release of 2.7 aren’t built for it so you can’t take advantage of these new features without some modification.  After reading the Migrating Plugins and Themes to 2.7/Enhanced Comment Display on WordPress.org I knew what needed to be done but unfortunately didn’t really have the php skillz to pull it off.  So what did I do?  I knew that the WordPress Default theme that was upgraded with 2.7 was a shining example of what the code was supposed to look like (see at the bottom of this post for the code), so here’s what I did:

  1. Enabled comment threading in the settings menu.
  2. Highlighted/copied all the code on my current theme’s comments.php file and pasted it into a plain text document as a backup.
  3. Highlighted/copied all the code on the WordPress Default theme.
  4. Went back to the comments.php file for my current theme, erased all the code, and replaced it with the code from the WordPress Default theme’s comments.php file (I made the backup just in case it didn’t work out).
  5. Opened my current theme’s header.php file and added the following code for the JavaScript immediately before the call to wp_head().

JavaScript Code:

< ?php if ( is_singular() ) wp_enqueue_script( 'comment-reply' ); ?>

That left me with a perfectly good working comments that thread upon command.  The only problem was the comments didn’t really display right because of lack of css.  I have basic css knowledge but still needed some help, that’s where Matt Jab’s blog post came in mad handy.  He lays out his own blog’s css for comments very clearly which makes a great foundation for tweaking on your blog.

Hope that helps!

WordPress 2.7 Default Theme comment.php Code:

< ?php
/**
* @package WordPress
* @subpackage Default_Theme
*/

// Do not delete these lines
if (!empty($_SERVER['SCRIPT_FILENAME']) && 'comments.php' == basename($_SERVER['SCRIPT_FILENAME']))
die ('Please do not load this page directly. Thanks!');

if ( post_password_required() ) { ?>
<p class="nocomments">This post is password protected. Enter the password to view comments.</p>
< ?php
return;
}
?>

<!-- You can start editing here. -->

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

<div class="navigation">
<div class="alignleft">< ?php previous_comments_link() ?></div>
<div class="alignright">< ?php next_comments_link() ?></div>
</div>

<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.</p>

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

< ?php if ('open' == $post->comment_status) : ?>

<div id="respond">

<h3>< ?php comment_form_title( 'Leave a Reply', 'Leave a Reply to %s' ); ?></h3>

<div class="cancel-comment-reply">
<small>< ?php cancel_comment_reply_link(); ?></small>
</div>

< ?php if ( get_option('comment_registration') && !$user_ID ) : ?>
<p>You must be <a href="<?php echo get_option('siteurl'); ?>/wp-login.php?redirect_to=< ?php echo urlencode(get_permalink()); ?>">logged in</a> to post a comment.</p>
< ?php else : ?>

<form action="<?php echo get_option('siteurl'); ?>/wp-comments-post.php" method="post" id="commentform">

< ?php if ( $user_ID ) : ?>

<p>Logged in as <a href="<?php echo get_option('siteurl'); ?>/wp-admin/profile.php">< ?php echo $user_identity; ?></a>. <a href="<?php echo wp_logout_url(get_permalink()); ?>" title="Log out of this account">Log out &raquo;</a></p>

< ?php else : ?>

<p><input type="text" name="author" id="author" value="<?php echo $comment_author; ?/>" size="22" tabindex="1" < ?php if ($req) echo "aria-required='true'"; ?> />
<label for="author"><small>Name < ?php if ($req) echo "(required)"; ?></small></label></p>

<p><input type="text" name="email" id="email" value="<?php echo $comment_author_email; ?/>" size="22" tabindex="2" < ?php if ($req) echo "aria-required='true'"; ?> />
<label for="email"><small>Mail (will not be published) < ?php if ($req) echo "(required)"; ?></small></label></p>

<p><input type="text" name="url" id="url" value="<?php echo $comment_author_url; ?/>" size="22" tabindex="3" />
<label for="url"><small>Website</small></label></p>

< ?php endif; ?>

<!--<p><small><strong>XHTML:</strong> You can use these tags: <code>< ?php echo allowed_tags(); ?></code></small>-->

<p><textarea name="comment" id="comment" cols="100%" rows="10" tabindex="4"></textarea></p>

<p><input name="submit" type="submit" id="submit" tabindex="5" value="Submit Comment" />
< ?php comment_id_fields(); ?>
</p>
< ?php do_action('comment_form', $post->ID); ?>

</form>

< ?php endif; // If registration required and not logged in ?>
</div>

< ?php endif; // if you delete this the sky will fall on your head ?>

Categories: Internet, Tutorials


3 Comments on “WordPress 2.7 Enhanced Comments for Dummies” Comments RSS Feed

  1. George H says:

    I just stopped by your blog and thought I would say hello. I like your site design. Looking forward to reading more down the road.

  2. Matt Jabs says:

    @Garrett:

    Glad I could help with the code, I figured I wasn’t the only one out there trying to work the WP 2.7 updates into my “old” theme!

Leave a Reply