只在WP主评论加上楼层号的方法『支持顺序、倒序』

今天在修改付费主题 zSnos2.5 时顺便把此主题的“主评论显示楼层号”代码优化了一下,让它支持评论顺序和倒序

基础代码可以参考我以前写的 2 篇文章:《只在WP主评论加上楼层号的方法(支持评论分页)》,《倒序显示主评论楼层号(支持评论分页)

前提条件:

1. 需要开启嵌套评论和评论分页功能(WP后台 》设置 》讨论) 2. 主题评论调用函数 wp_list_comments() (在 comments.php 文件里)使用了回调函数。具体参考:http://codex.wordpress.org/Template_Tags/wp_list_comments 3. 此文章所说主题评论是调用所有类型评论:comment、pingback、trackback,如果只是调用 comment 部分,需要对代码稍微修改

下面以官方给出的 wp_list_comments() 回调函数作为例子来说明。

1. 官方最新的 wp_list_comments() 回调函数代码:(这段代码一般放在主题文件 functions.php)

function mytheme_comment($comment, $args, $depth) {
$GLOBALS['comment'] = $comment;
extract($args, EXTR_SKIP);

if ( 'div' == $args['style'] ) {
$tag = 'div';
$add_below = 'comment';
} else {
$tag = 'li';
$add_below = 'div-comment';
}
?>
<<?php echo $tag ?> <?php comment_class(empty( $args['has_children'] ) ? '' : 'parent') ?> id="comment-<?php comment_ID() ?>">
<?php if ( 'div' != $args['style'] ) : ?>
<div id="div-comment-<?php comment_ID() ?>" class="comment-body">
<?php endif; ?>
<div class="comment-author vcard">
<?php if ($args['avatar_size'] != 0) echo get_avatar( $comment, $args['avatar_size'] ); ?>
<?php printf(__('<cite class="fn">%s</cite> <span class="says">says:</span>'), get_comment_author_link()) ?>
</div>
<?php if ($comment->comment_approved == '0') : ?>
<em class="comment-awaiting-moderation"><?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
/* translators: 1: date, 2: time */
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('add_below' => $add_below, 'depth' => $depth, 'max_depth' => $args['max_depth']))) ?>
</div>
<?php if ( 'div' != $args['style'] ) : ?>
</div>
<?php endif; ?>
<?php
}

2. 然后在 $GLOBALS['comment'] = $comment; 这句下面添加楼层号处理函数,具体看下面修改好的的代码,标注 (加处理),共3处。

<?php
function mytheme_comment($comment, $args, $depth) {
$GLOBALS['comment'] = $comment;

//(加处理-开始)主评论计数器 by zwwooooo
global $commentcount, $page, $wpdb;
if ( (int) get_option('page_comments') === 1 && (int) get_option('thread_comments') === 1 ) { //开启嵌套评论和分页才启用
if(!$commentcount) { //初始化楼层计数器
$page = ( !empty($in_comment_loop) ) ? get_query_var('cpage') : get_page_of_comment( $comment->comment_ID, $args ); //获取当前评论列表页码
$cpp = get_option('comments_per_page'); //获取每页评论显示数量
if ( get_option('comment_order') === 'desc' ) { //倒序
$comments = $wpdb->get_results("SELECT * FROM $wpdb->comments WHERE comment_post_ID = $post->ID AND comment_type = 'all' AND comment_approved = '1' AND !comment_parent");
$cnt = count($comments); //获取主评论总数量
if (ceil($cnt / $cpp) == 1 || ($page > 1 && $page == ceil($cnt / $cpp))) { //如果评论只有1页或者是最后一页,初始值为主评论总数
$commentcount = $cnt + 1;
} else {
$commentcount = $cpp * $page + 1;
}
} else {
$commentcount = $cpp * ($page - 1);
}
}
if ( !$parent_id = $comment->comment_parent ) {
$commentcountText = '<div class="floor">';
if ( get_option('comment_order') === 'desc' ) { //倒序
$commentcountText .= --$commentcount . '楼';
} else {
switch ($commentcount) {
case 0:
$commentcountText .= '<span>沙发!</span>'; ++$commentcount;
break;
case 1:
$commentcountText .= '<span>板凳!</span>'; ++$commentcount;
break;
case 2:
$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';
}
?>
<<?php echo $tag ?> <?php comment_class(empty( $args['has_children'] ) ? '' : 'parent') ?> id="comment-<?php comment_ID() ?>">
<?php if ( 'div' != $args['style'] ) : ?>
<div id="div-comment-<?php comment_ID() ?>" class="comment-body">
<?php endif; ?>
<div class="comment-author vcard">
<?php if ($args['avatar_size'] != 0) echo get_avatar( $comment, $args['avatar_size'] ); ?>
<?php printf(__('<cite class="fn">%s</cite> <span class="says">says:</span>'), get_comment_author_link()) ?>
</div>
<?php if ($comment->comment_approved == '0') : ?>
<em class="comment-awaiting-moderation"><?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
/* translators: 1: date, 2: time */
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('add_below' => $add_below, 'depth' => $depth, 'max_depth' => $args['max_depth']))) ?>
</div>

<?php echo $commentcountText; //主评论楼层号 - //(加处理) ?>

<?php if ( 'div' != $args['style'] ) : ?>
</div>
<?php endif; ?>
<?php
}

注:(底部显示位置可以自己根据自己所用主题选择,这里我加在回复按钮后面,另外楼层显示样式可以通过 floor 这个 class 定义)

就这样吧,现在折腾 WordPress 的朋友少了很多,新朋友参考一下吧。

via zww - http://zww.me/archives/25716

除非注明,沙唐桔文章均为原创,本文地址 https://cyhour.com/11/,转载时必须以链接形式注明原始出处。
声明:我们不销售主机,选主机需合法使用。任何主机需定期备份,防止数据丢失。信息以实际为准,评测仅供参考不代表权威!

贫困是因为懒惰吗?

李小云:中国农业大学文科资深讲席教授、小云助贫中心发起人、国务院扶贫开发领导小组专家咨询委员会委员。原文 社会大众一般所持有“个人努力脱贫模式”认为一个人的命运掌握在自己手上,穷人之所以贫困是因为懒惰。事实上,在贫富分化的社会现实中,穷人和富人往往不在同一起跑线上,穷人依靠个人…
浏览: 129 标签:  ,  , 

广州海珠通报英国输入确诊病例治愈后复阳又转阴

今日(2021年1月7日)下午4时许,广州市海珠区疾病预防控制中心微信公号「海珠健康」发布通告:广州海珠通报英国输入确诊病例治愈后复阳又转阴,周围环境样本阴性。 2021年1月6日,广州市海珠区发现1名境外输入确诊病例出院后检测阳性,海珠区新冠肺炎疫情防控指挥部立即启动应急处置工作。该…

莫德纳(Moderna)宣布疫苗最新三期临床试验数据:100%预防新冠重症

当地时间11月30日,美国医药公司莫德纳向美国食品与药品监督管理局(FDA)申请该公司的新冠疫苗的紧急使用授权。在申请报告中,莫德纳指出,该公司的疫苗可100%预防新冠重症。 维基百科:莫德纳(英语:Moderna),是一家总部位于美国马萨诸塞州剑桥市的生物技术公司,公司主要负责基于信使核…
浏览: 67 标签:  ,  ,  ,  , 

新冠病毒源头可能永远找不到

中关村论坛平行论坛之一,全球科学与生命健康论坛2020年9月18日在京举行,中国科学院武汉病毒研究所研究员石正丽发表题为“新冠肺炎病原学鉴定和可能的起源”主旨演讲。 石正丽在接受新京报记者采访时表示,团队正在溯源新冠病毒的自然源头,不过新冠病毒借由哪种中间宿主、如何从自然界传播到人类,…
浏览: 43 标签:  ,  ,  ,  ,  , 
浏览: 51 标签:  , 

Comments:0

发表留言

Vultr 送$100,搬瓦工年付最低$49,优惠码 BWH3HYATVBJW,更多推荐VPS信息