回调函数个性化 WordPress 评论样式

在看本文中前,建议各位先在下面留言试试小站最新的评论样式。因为之前遵从 zww建议,我把每页评论数从10条调整到25条,这样可以方便喜欢往前翻阅评论的访客,不过这样一来,就不可避免地拉长了每页显示的高度,这可就要累坏了各位的滚轮鼠标,出于人性化的考虑,我今天修改了一下 WordPress 评论样式,缩短了每条评论所占的高度,所以现在看起来评论格式就紧凑多了。下面简单记录一下修改过程中的要点。

我们都知道,Wordpress 2.7+的主题中被引入了 wp_list_comments 函数,可不要小看这一句函数啊,变化无穷哟。今天对评论样式的修改就是建立在 wp_list_comments 的 callback 回调函数上。

首先在 WordPress 主题的 functions.php 中添加对评论样式定义的 mytheme_comment 函数,默认值如下:

function mytheme_comment($comment, $args, $depth) {
   $GLOBALS['comment'] = $comment; ?>
   <li <?php comment_class(); ?> id="li-comment-<?php comment_ID() ?>">
     <div id="comment-<?php comment_ID(); ?>">
      <div class="comment-author vcard">
         <?php echo get_avatar($comment,$size='32',$default='<path_to_url>' ); ?>

         <?php printf(__('<cite class="fn">%s</cite> <span class="says">says:</span>'), get_comment_author_link()) ?>
      </div>
      <?php if ($comment->comment_approved == '0') : ?>
         <em><?php _e('Your comment is awaiting moderation.') ?></em>
         <br />
      <?php endif; ?>

      <div class="comment-meta commentmetadata"><a href="<?php echo htmlspecialchars( get_comment_link( $comment->comment_ID ) ) ?>"><?php printf(__('%1$s at %2$s'), get_comment_date(),  get_comment_time()) ?></a><?php edit_comment_link(__('(Edit)'),'  ','') ?></div>

      <?php comment_text() ?>

      <div class="reply">
         <?php comment_reply_link(array_merge( $args, array('depth' => $depth, 'max_depth' => $args['max_depth']))) ?>
      </div>
     </div>
<?php
        }

所谓的默认值,就是在不调用该函数时,Wordpress 评论就按照上面的函数显示,也就是我之前的评论样式。这就可以根据每个主题,不同的需要自行修改了,稍微懂一些 Html 的朋友就可以自己 DIY 一下,别被其中的 php 吓倒了,梳理清楚就会发现并不难。

然后在 WordPress 主题的 comments.php 中用 callback 回调函数引入之前定义的 mytheme_comment 函数,方法如下:

<ul class="commentlist">
<?php wp_list_comments('type=comment&callback=mytheme_comment'); ?>
</ul>

最后再扩展一下关于 callback 回调的用法,如果你的主题已经引入了 mytheme_comment 函数,那你不妨参考下 Willin 大师的迷你版 gravatar 头像缓存方法。我本来是用 WordPress 2.7+主题 gravatar 头像缓存方法的,今天多亏 callback 回调函数 mytheme_comment,我也可以用 Willin 大师的方法了,这样也就避免了 WordPress 版本升级带来的更新麻烦咯。

,,

相关的文章