Styling Your WordPress Comments

Note: this post still gets plenty of traffic, but is quickly becoming outdated. I currently use Disqus for all WordPress projects

A fun part of customizing WordPress themes is designing a comments format which complements the rest of the site. Here are three examples from recent projects, including code samples and downloads to the original .PSDs:

  1. Green Gravatars

    This comment style was part of a very green-and-beige environmental blog which since received a makeover. It requires the gravatar plugin and three different images: the scanlines, the clock and the gradient, which can be exported from your .PSD.

    First, we’ll need to first edit the ordered-list section of the “comments.php” template:

    <ol class="commentlist">
    <?php foreach ($comments as $comment) : ?>
    <li <?php echo $oddcomment; ?>id="comment-<?php comment_ID() ?>">
    <cite>
    <img src="<?php gravatar("R", 32); ?>" alt="" />
    <span class="author"><?php comment_author_link() ?></span><br /><span class="time"><?php comment_time() ?></span> on <a href="#comment-<?php comment_ID() ?>" title=""><?php comment_date('F jS, Y') ?></a> <?php edit_comment_link('edit','&nbsp;&nbsp;',''); ?>
    </cite>
    <div class="commenttext"><?php comment_text() ?></div>
    <?php if ($comment->comment_approved == '0') : ?>
    <em>Your comment is awaiting moderation.</em>
    <?php endif; ?>
    </li>
    <?php
    /* Changes every other comment to a different class */
    $oddcomment = ( empty( $oddcomment ) ) ? 'class="alt" ' : '';
    ?>
    <?php endforeach; /* end for each comment */ ?>
    </ol>

    Aside from a few images, the rest of the styling is accomplished with CSS:

    ol.commentlist {
    	margin:0;
    	padding:0;
    	}
    
    .commentlist li {
    	list-style:none;
    	margin-bottom:14px;
    	}
    
    .commentlist cite {
    	padding: 7px;
    	display:block;
    	font-style:normal;
    	background:url(http://www.yoursite.com/images/bg_comments2_cite.gif);
    	border-top:1px solid #d6e4c1;
    	border-bottom:1px solid #779d42;
    	color:#596e3b;
    	}
    
    .commentlist a:link, .commentlist a:visited {
    	color:#596e3b;
    	}
    
    .commentlist a:hover, .commentlist a:active {
    	color:#8ec343;
    	}
    
    .commentlist cite img {
    	padding:1px;
    	border:1px solid #aab59a;
    	float:left;
    	margin-right:9px;
    	}
    
    .commentlist .author {
    	font: small-caps bold 1.2em Georgia, "Times New Roman", Times, serif;
    	text-decoration:underline;
    	}
    
    .commentlist .time {
    	background: url(http://www.yoursite.com/images/bg_clock.gif) no-repeat 1px;
    	padding-left:13px;
    	}
    
    .commenttext {
    	background: #9bc561 url(http://www.yoursite.com/images/bg_comments2_text.jpg) repeat-x bottom;
    	border-top:1px solid #c5f386;
    	padding: 0 20px 10px 20px;
    	color:#fafcf6;
    	}

    Keep in mind, each of these examples uses ems for font sizing, so your existing CSS may need to be tinkered with to match the screenshot above.

    Download

  2. The Speech Bubble

    I designed this comment style for my company’s website. It requires two images, the quote marks and the little curl. The relevant template code looks like this:

    <ol class="commentlist">
    <?php foreach ($comments as $comment) : ?>
    <li <?php echo $oddcomment; ?>id="comment-<?php comment_ID() ?>">
    <div class="quote"><?php comment_text() ?></div>
    <?php if ($comment->comment_approved == '0') : ?>
    <em>Your comment is awaiting moderation.</em>
    <?php endif; ?>
    </li>
    <cite><?php comment_author_link() ?> on <a href="#comment-<?php comment_ID() ?>" title=""><?php comment_date('F jS, Y') ?> at <?php comment_time() ?> <?php edit_comment_link('edit','&nbsp;&nbsp;',''); ?></a></cite>
    <?php
    /* Changes every other comment to a different class */
    $oddcomment = ( empty( $oddcomment ) ) ? 'class="alt" ' : '';
    ?>
    <?php endforeach; /* end for each comment */ ?>
    </ol>

    And here is the CSS:

    .commentlist .quote {
    	background:url(http://www.yoursite.com/images/bg_quote.gif) no-repeat top right;
    	}
    
    .commentlist li {
     	padding: 5px 18px 22px 18px;
    	margin-top:15px;
    	background:#454545 url(http://www.yoursite.com/images/bg_commentlist.gif) bottom no-repeat;
    	color:#e4edee;
    	}
    
    .commentlist cite {
    	display:block;
    	font-style:normal
    	}
    
    .commentlist cite a:link, .commentlist cite a:visited {
    	color:#88e5f0;
    	text-decoration:none;
    	}
    
    .commentlist cite a:hover, .commentlist cite a:active {
    	color:#FFF;
    	text-decoration:underline;
    	}

    Download

  3. Alternating Arrows

    This comment styling originated from a music magazine I mocked up but never quite launched (so feel free to use it). I don’t always make use of the “.alt” class for comments, but it’s handy here for making the arrow and colors alternate. The images used are two different “paint” effects, the diagonal pattern, the chainlink and two kinds of arrows.

    Here is the template code:

    <ol class="commentlist">
    <?php foreach ($comments as $comment) : ?>
    <li <?php echo $oddcomment; ?>id="comment-<?php comment_ID() ?>">
    <div class="commenttext">
    <cite><?php comment_author_link() ?></cite>
    <?php comment_text() ?>
    <span class="date"><img src="/images/commentlink.gif" alt="" /> <a href="#comment-<?php comment_ID() ?>" title=""><?php comment_time() ?> on <?php comment_date('n/j/y') ?></a></span> <?php edit_comment_link('edit','&nbsp;&nbsp;',''); ?>
    </div>
    <?php if ($comment->comment_approved == '0') : ?>
    <em>Your comment is awaiting moderation.</em>
    <?php endif; ?>
    </li>
    <?php
    /* Changes every other comment to a different class */
    $oddcomment = ( empty( $oddcomment ) ) ? 'class="alt" ' : '';?>
    <?php endforeach; /* end for each comment */ ?>
    </ol>

    And here is the CSS:

    ol.commentlist {
    	margin:0;
    	padding:0;
    	}
    
    .commentlist li {
    	margin-bottom:8px;
    	background: #60360b url(http://www.yoursite.com/images/comment_arrows.gif) bottom no-repeat;
    	color:#FFF;
    	list-style:none;
    	width:413px;
    	}
    
    .commentlist .commenttext {
    	background:url(http://www.yoursite.com/images/bg_paint.gif) no-repeat;
    	padding:22px 22px 50px 22px;
    	}
    
    .commentlist cite {
    	display:block;
    	color:#FFF;
    	font-weight:bold;
    	text-transform:uppercase;
    	font-style:normal;
    	background:url(http://www.yoursite.com/images/bg_cite_arrows.gif) bottom repeat-x;
    	padding-bottom:12px;
    	font-size:1.1em;
    	}
    
    .commentlist a:link, .commentlist a:visited {
    	color:#fff9b9;
    	}
    
    .commentlist a:hover, .commentlist a:active {
    	color:#FFF;
    	}
    
    .commentlist .date {
    	background:#930e27;
    	padding:3px;
    	}
    
    li.alt {
    	background:#836241 url(http://www.yoursite.com/images/comment_arrows_alt.gif) no-repeat bottom;
    	}
    
    li.alt .commenttext {
    	background:url(http://www.yoursite.com/images/bg_paint_alt.gif) no-repeat;
    	}
    
    li.alt .date {
    	background:#67421c;
    	padding:3px;
    	}

    Download