给WordPress中的留言加上楼层号的PHP代码实例
最近突然发现博客的评论楼层有点问题,之前一直设置的是“在每个页面顶部显示新的评论”,也就是所谓的倒序显示评论,但是主题只支持顺序的评论楼层好,于是楼层和楼层号之间对不上。搜了一下在zww.me发现有实现的代码,但是放到博客之后无法正常工作,比如限制分页显示为25条的时候,文章只有一条评论时也显示的25楼。折腾了一下搞定了,做个记录,也供大家参考。
在主题文件functions.php中找到$GLOBALS['comment']=$comment;在后面加上下面的代码:
/*主评论计数器*/ global$commentcount,$wpdb,$post; if(!$commentcount){//初始化楼层计数器 if(get_option('comment_order')==='desc'){//倒序 $comments=$wpdb->get_results("SELECT*FROM$wpdb->commentsWHEREcomment_post_ID=$post->IDANDcomment_type=''ANDcomment_approved='1'AND!comment_parent"); $cnt=count($comments);//获取主评论总数量 $page=get_query_var('cpage');//获取当前评论列表页码 $cpp=get_option('comments_per_page');//获取每页评论显示数量 if(ceil($cnt/$cpp)==1||($page>1&&$page==ceil($cnt/$cpp))){ $commentcount=$cnt+1;//如果评论只有1页或者是最后一页,初始值为主评论总数 }else{ $commentcount=$cpp*$page+1; } }else{//顺序 $page=get_query_var('cpage')-1; $cpp=get_option('comments_per_page');//获取每页评论数 $commentcount=$cpp*$page; } } /*主评论计数器end*/ if(!$parent_id=$comment->comment_parent){ $commentcountText='<divclass="floor">'; if(get_option('comment_order')==='desc'){//倒序 $commentcountText.=--$commentcount.'楼'; }else{ switch($commentcount){ case0: $commentcountText.='<span>沙发!</span>';++$commentcount; break; case1: $commentcountText.='<span>板凳!</span>';++$commentcount; break; case2: $commentcountText.='<span>地板!</span>';++$commentcount; break; default: $commentcountText.=++$commentcount.'楼'; break; } } $commentcountText.='</div">'; } }
然后在合适的位置加上以下代码输出楼层号
<?phpecho$commentcountText;//主评论楼层号-byzwwooooo?>
修改之后的代码应该是这样的(以官方最新的wp_list_comments()回调函数代码为例):
<?php functionmytheme_comment($comment,$args,$depth){ $GLOBALS['comment']=$comment; /*主评论计数器byzwwoooooModifiedGimhoy(http://blog.gimhoy.com)*/ global$commentcount,$wpdb,$post; if(!$commentcount){//初始化楼层计数器 if(get_option('comment_order')==='desc'){//倒序 $comments=$wpdb->get_results("SELECT*FROM$wpdb->commentsWHEREcomment_post_ID=$post->IDANDcomment_type=''ANDcomment_approved='1'AND!comment_parent"); $cnt=count($comments);//获取主评论总数量 $page=get_query_var('cpage');//获取当前评论列表页码 $cpp=get_option('comments_per_page');//获取每页评论显示数量 if(ceil($cnt/$cpp)==1||($page>1&&$page==ceil($cnt/$cpp))){ $commentcount=$cnt+1;//如果评论只有1页或者是最后一页,初始值为主评论总数 }else{ $commentcount=$cpp*$page+1; } }else{//顺序 $page=get_query_var('cpage')-1; $cpp=get_option('comments_per_page');//获取每页评论数 $commentcount=$cpp*$page; } } /*主评论计数器end*/ if(!$parent_id=$comment->comment_parent){ $commentcountText='<divclass="floor">'; if(get_option('comment_order')==='desc'){//倒序 $commentcountText.=--$commentcount.'楼'; }else{ switch($commentcount){ case0: $commentcountText.='<span>沙发!</span>';++$commentcount; break; case1: $commentcountText.='<span>板凳!</span>';++$commentcount; break; case2: $commentcountText.='<span>地板!</span>';++$commentcount; break; default: $commentcountText.=++$commentcount.'楼'; break; } } $commentcountText.='</div">'; } } extract($args,EXTR_SKIP); if('div'==$args['style']){ $tag='div'; $add_below='comment'; }else{ $tag='li'; $add_below='div-comment'; } ?> <<?phpecho$tag?><?phpcomment_class(empty($args['has_children'])?'':'parent')?>id="comment-<?phpcomment_ID()?>"> <?phpif('div'!=$args['style']):?> <divid="div-comment-<?phpcomment_ID()?>"class="comment-body"> <?phpendif;?> <divclass="comment-authorvcard"> <?phpif($args['avatar_size']!=0)echoget_avatar($comment,$args['avatar_size']);?> <?phpprintf(__('<citeclass="fn">%s</cite><spanclass="says">says:</span>'),get_comment_author_link())?> </div> <?phpif($comment->comment_approved=='0'):?> <emclass="comment-awaiting-moderation"><?php_e('Yourcommentisawaitingmoderation.')?></em> <br/> <?phpendif;?> <divclass="comment-metacommentmetadata"><ahref="<?phpechohtmlspecialchars(get_comment_link($comment->comment_ID))?>"> <?php /*translators:1:date,2:time*/ printf(__('%1$sat%2$s'),get_comment_date(),get_comment_time())?></a><?phpedit_comment_link(__('(Edit)'),'',''); ?> </div> <?phpcomment_text()?> <divclass="reply"> <?phpcomment_reply_link(array_merge($args,array('add_below'=>$add_below,'depth'=>$depth,'max_depth'=>$args['max_depth'])))?> </div> <?phpecho$commentcountText;//主评论楼层号-byzwwooooo?> <?phpif('div'!=$args['style']):?> </div> <?phpendif;?> <?php }
样式就自己添加吧~~