在看本文中前,建议各位先在下面留言试试小站最新的评论样式。因为之前遵从 zww 的建议,我把每页评论数从10条调整到25条,这样可以方便喜欢往前翻阅评论的访客,不过这样一来,就不可避免地拉长了每页显示的高度,这可就要累坏了各位的滚轮鼠标,出于人性化的考虑,我今天修改了一下 Wordpress 评论样式,缩短了每条评论所占的高度,所以现在看起来评论格式就紧凑多了。下面简单记录一下修改过程中的要点。
我们都知道,Wordpress 2.7+的主题中被引入了 wp_list_comments 函数,可不要小看这一句函数啊,变化无穷哟。今天对评论样式的修改就是建立在 wp_list_comments 的 callback 回调函数上。
首先在 Wordpress 主题的 functions.php 中添加对评论样式定义的 mytheme_comment 函数,默认值如下:
$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 函数,方法如下:
<?php wp_list_comments('type=comment&callback=mytheme_comment'); ?>
</ul>
最后再扩展一下关于 callback 回调的用法,如果你的主题已经引入了 mytheme_comment 函数,那你不妨参考下 Willin 大师的迷你版 gravatar 头像缓存方法。我本来是用 Wordpress 2.7+主题 gravatar 头像缓存方法的,今天多亏 callback 回调函数 mytheme_comment,我也可以用 Willin 大师的方法了,这样也就避免了 Wordpress 版本升级带来的更新麻烦咯。

在自己博客试用了一下,但无法回复…………气死我呢》》》》
不错,我来研究下把它搬到typecho上~
话说我的主题一直都是用
wp_list_comments('type=comment&callback=mytheme_comment');这个函数。
可能主题太老啦吧~~哈哈
我现在用的也是这个函数,自定义程度很高啊,不错不错
我没有看懂。。。
是我太啰嗦了。。。
是我真的不懂,这个和wp默认的那个是互补的?还是水火不容的?还是其他怎么一回事呢?真不懂啊。
我一直都用wp默认的那个最简单的 一个ol搞定的那个,但是可自定义的东西很少。
你说的是2.7以前的主题了,现在引入了wp_list_comments这个函数,就省事多了
是啊 我就是用的这个函数啊 三行代码就搞定的
《ol class="commentlist"》
《?php wp_list_comments();?》
《/ol》
就这个啊
你用的是默认函数,没有加参数
你说的参数就是这个日志的内容吗?加了参数和不加参数有什么区别?
是的,不加参数就是默认的啦,不能自定义,加了参数,就是wp_list_comments()括号里的内容,那就千变万化咯
这回有点明白了
WP的啊,那我只有凑热闹了。
呵呵,没关系呀,水一下也好,管它是不是WP呢
感觉有点密,不过确实缩短了长度
为了缩短长度,就只好挤一挤了
感谢分享哈
我怎么没什么感觉???
比较一下和我一样的主题,你就会发现不同咯
头像在左边~!好不习惯~!
多看看就习惯啦,感觉把头像和名字放一边会好些
飘过~~~~
目送~慢飘~
问个问题,比如我的站 三处调用G头像,回复,评论插件,以及最新评论的侧边栏
-------
觉得直接把原函数改掉最好,否则 出现这种情况:一个陌生的email在 层叠的回复里回复,使用的是插件里的函数,直接去本地找肯定没有头像,于是杯具了!
确实,你说的问题我也碰到了,我认为改一下相应插件里的函数就可以,不过还没试过
wordpress-thread-comment 调用的是 get_avatar
我目前使用的事 那个 最mini的修改法。难道还要在这里 写一套缓存代码?
那 侧边栏 不用写,那里用到的头像 一定提前备缓存过。所以觉得把MINI代码集成到 原函数中 才是正解
理论上完全可以,这样也省了不少麻烦
正在实践,目前还抱着侥幸心里这样想:第一次出现的访客都是回复文章 而不是回复某个人。嘻嘻
不是我想要的。。。
万戈,请教你一件事,我用的inove的主题,但是我在向function.PHP里添加函数时通常会出现错误时怎么回事。
这个原因有很多,首先要确定你添加的代码位置是否正确,还要确定你的函数是否有冲突
比如说是侧栏要调用的函数放在什么部位,一般我是放在头部或尾部,但是尾部一般冲突,随后后台打不开。头部的话,添加文章有错误。
关键是要在PHP的开始和结束符之间,还有不要打断其他函数
后台打不开,前台出现提示,一般都是语法错误。仔细看看括号匹配之类的。
这样看着多热闹。
昨天我用函式庫文檔自己組了一個國旗+UA的演示
滿滿的 你吃我的迴響
看看星星的网站就知道区别了,呵呵
好象...是有一点点变化? 其实我没看出来
好像有一点点变化就行
试一试
哪里有什么变化了。。
又做了一次调整,现在有明显变化了吧?
学着把我的整一下
天冷,大家挤在一起暖和。
哈哈,言之有理,那就多来挤挤吧
太紧凑了,我情愿滚多两下
个人感觉,因为我滚惯了,我的是30层,哇咔咔,请忽视
恩,还需要再改改,现在的也不是定稿
看看效果 果然密集了很多
那我先看看啥变化 哈哈~~
感觉好些没?
其实也不是很好看 囧
做博客的果然用FF浏览器的居多
呵呵,那是,做博客的都知道IE的弱点
帮你测试下。
俺博客没用wp的。。。
哎呀呀,试一下试一下 ~
郁闷,小邪居然连callback的概念都没用 ~
太杯具了,迟一点研究下 ~
紧凑多了,只是看起来稍显密实
恩,还只是修改了一半,还需要再改改
用回调方式,评论的样式自定义性强多了!
恩,原主题居然没有,我居然今天才折腾出来,自己汗一个
呵呵,慢慢进步嘛
所有WPJAM的牛人都是我学习的目标,你就是其中中一
试一下试一下~
新的评论样式,感觉如何呀?顺不顺手?
是紧凑了那么一点……感觉变化不是很大,没有视觉冲击啊……
我怕视觉冲击后,把大家吓跑了,所以一点一点改,有一个适应的过程
我也帮忙盖一层,看什么时候可以翻页。
要翻页,还为时尚早,嘿嘿
没啥感觉,再来一条
有感觉了没?我不介意你再多试几条or几十条or几百条
又挑衅 ..
我赶紧试试先
我的沙发,我热哦。。
每次盼盼坐沙发,你就热呀
因为每次都慢了一小步。。。
我不是抢沙发,是测试。
嘿嘿,是不是感觉比以前的评论好一些呀