代码实现类似大前端DUX WordPress主题评论列表显示楼层

逛其他童鞋的WordPress网站的时候,发现很多童鞋的评论列表后面的楼层显示第几层。这个功能是怎么实现的了?

比如大前端DUX主题的评论列表就有楼层计数功能。可以到大前端主题文件中看一下人家的写法,毕竟是国内的大佬,值得学习。

代码实现类似大前端DUX WordPress主题评论列表显示楼层1技术教程主机格调

该文件位于大前端DUX主题目录下的modules文件夹中,名字叫做mo_comments_list.php:。

/**
 * [mo_comments_list description]
 * @param  [type] $comment [description]
 * @param  [type] $args    [description]
 * @param  [type] $depth   [description]
 * @return [type]          [description]
 */
function mo_comments_list($comment, $args, $depth) {
    $GLOBALS['comment'] = $comment;

    global $commentcount, $wpdb, $post;
    if(!$commentcount) { //初始化楼层计数器

        $page     = get_query_var('cpage');//获取当前评论列表页码
        $cpp      = get_option('comments_per_page');//获取每页评论显示数量
        $pcs      = get_option('page_comments');//分页开关
        
        $comments = $wpdb->get_results("SELECT * FROM $wpdb->comments WHERE comment_post_ID = $post->ID AND comment_type = '' AND comment_approved = '1' AND !comment_parent");
        $cnt      = count($comments);//获取主评论总数量

        if ( get_option('comment_order') === 'desc' ) { //倒序
            if (!$pcs || ceil($cnt / $cpp) == 1 || ($page > 1 && $page  == ceil($cnt / $cpp))) {
                $commentcount = $cnt + 1;//如果评论只有1页或者是最后一页,初始值为主评论总数
            } else {
                $commentcount = $cpp * $page + 1;
            }
        }else{ //顺序
            if( !$pcs ){
                $commentcount = 0;
            }else{
                $page = $page-1;
                $commentcount = $cpp * $page;
            }
        }
    }
    
    echo '<li '; comment_class(); echo ' id="comment-'.get_comment_ID().'">';
 if(!$parent_id = $comment->comment_parent ) {
        echo '<span class="comt-f">#'. (get_option('comment_order') === 'desc'?--$commentcount:++$commentcount) .'</span>';
    }
 echo '<div class="comt-avatar">';
        echo _get_the_avatar($user_id=$comment->user_id, $user_email=$comment->comment_author_email);
    echo '</div>';
echo '<div class="comt-main" id="div-comment-'.get_comment_ID().'">';
comment_text();
if ($comment->comment_approved == '0'){
            echo '<span class="comt-approved">待审核</span>';
        }
 echo '<div class="comt-meta"><span class="comt-author">'.get_comment_author_link().'</span>';
            echo _get_time_ago($comment->comment_date); 
            if ($comment->comment_approved !== '0'){
$replyText = get_comment_reply_link( array_merge( $args, array('add_below' => 'div-comment', 'depth' => $depth, 'max_depth' => $args['max_depth'] ) ) );
                // echo str_replace(' href', ' href="javascript:;" data-href', $replyText ); 
                if( strstr($replyText, 'reply-login') ){
 echo preg_replace('# class="[\s\S]*?" href="[\s\S]*?"#', ' class="signin-loader" href="javascript:;"', $replyText );
                }else{
                  echo preg_replace('# href=[\s\S]*? onclick=#', ' href="javascript:;" onclick=', $replyText );
                }
            }
echo '</div>';
echo '</div>';
}

方法一

像大前端DUX主题一样,在主题目录下建立modules文件夹,然后将上面的代码保存在该文件夹中,再利用如下代码加载到WordPress中。

function _moloader($name = '', $apply = true) {
	if (!function_exists($name)) {
		include get_stylesheet_directory() . '/modules/' . $name . '.php';
	}

	if ($apply && function_exists($name)) {
		$name();
	}
}

加载方式多种多样,直接使用include引用也是可以的。

然后通过_moloader(‘mo_comments_list’, false);来加载上面的代码,最后就是使用了。WordPress提供了评论列表加载方法wp_list_comments函数,该函数可以携带回调函数callback。

wp_list_comments('type=comment&callback=mo_comments_list');

上述代码的意思是取出评论数据,并交给回调函数mo_comments_list来处理,mo_comments_list就是上面我们的楼层计数方法,其中包含了输出评论的内容。

方法二

直接将上面的代码写在functions.php文件中,返回在文章页适当位置使用下面代码来调用。

wp_list_comments('type=comment&callback=mo_comments_list');

第二个方法无疑是最为简单。但是如果在functions.php中,加入太多的东西难免会显得臃肿。。

【声明1】:如本站转载别的站的文章,我个人没有添加来源,您可以发电邮:admin#zhuji.gd 提醒我,我会尽快添加文章来源。 【声明2】:本博客不参与任何交易及中介服务,只记录 VPS 测评和优惠,内容均不作直接、间接、法定、约定的保证。访问本博客请务必遵守有关互联网的相关法律、规定与规则。一旦您访问本博客,即表示您已经知晓并接受了此声明通告。
(0)
上一篇 11/04/2019 11:08
下一篇 13/04/2019 08:50

相关推荐

  • WordPress基于WPJAM BASIC开发的免费主题:Autumn主题

    在之前,我给大家推荐了我爱水煮鱼和XinTheme最新联合开发的 WordPress 主题:Sweet。 延伸阅读: WordPress基于WPJAM basic开发的主题:Sweet 还有一款两家联合推出的WordPress免费主题非常优秀:Autumn,这是水煮鱼和XinTheme联合开发的第二款主题。 这款高大上的WordPress免费主题拥有很多只有收费主题才有的功能配置,而且与wpjam basic深度结合优化。 [ad] 只要你安装 Memcached,可以达到0SQL,性能优化到这个程度的主题...

    03/04/2019
    12.0K0
  • 5个许多网站站长都会忽视的搜索引擎SEO技巧

    在帮许多博客SEO诊断以后发现大部分的网站和博客虽然听过了许多SEO课程,写文章的时候还是在许多小地方还是有点搞不清楚。跟大家分享绝大部分部落客容易发生的SEO小错误,当你修正了这些小错误后对于整体文章的SEO会有非常大的加分效果。 文章标题对SEO的加分 文章标题一直都是SEO最重要的关键,许多人在命名标题的时候总会喜欢把一些自己的想法或是觉得吸引人的字样放在标题上,无可厚非,但标题的前半段是最重要的位置我们该...

    06/08/2019
    18.2K0
  • WordPress插件:Autoptimize 插件优化版 整合并压缩CSS和JavaScript代码

    Autoptimize是一款用于整合CSS和JavaScript代码并压缩,优化网站的WordPress插件。但Autoptimize插件加载了部分国内无法访问的资源,严重影响打开插件设置页面速度。 在使用过程中,发现老版本的Autoptimize已不支持PHP 7.x,无法正常工作,知更鸟为此专门在官方Autoptimize 2.3.4版基础上制作优化版,删除影响加载速度的链接代码及多余的功能,现分享给有需要的朋友。 [ad] 当前最新版本Autoptimize插件官网已提供中文语言文件...

    09/03/2019
    12.0K0
  • 搭建VPS环境选择LAMP环境还是LNMP环境好

    WordPress建站在VPS服务器搭建环境是选择LAMP环境还是LNMP环境好?需要简单了解一下两者的基本概念 什么是LAMP环境? Linux+Apache+Mysql/MariaDB+Perl/PHP/Python一组常用来搭建动态网站或者服务器的开源软件,本身都是各自独立的程序,但是因为常被放在一起使用,拥有了越来越高的兼容度,共同组成了一个强大的Web应用程序平台。 开放源代码的LAMP已经与J2EE和.Net商业软件形成三足鼎立之势,并且该软件开发的项目在软件方面...

    技术教程 16/03/2019
    11.3K0
  • 忘记WordPress后台密码要如何找回或修改密码

    自己的Wordpress出现了两次密码忘记的情况,第一次是浏览器Chrome有记忆密码可以进入控制面板的情况,另一次手贱改了密码直接控制面板都进不去了,网上找了各种介绍,感觉不是很系统,乱七八糟,对于一个我类似的小白都把简单问题说的复杂化了,总结一下我的方法吧,希望对大家有用。 在忘记密码后,控制台点忘记密码,发送的邮件无法修改密码,据说是Wordpress的问题,几年了还没改。所以不要指望这个方式改密码了。网上有通过...

    13/03/2019
    12.9K0
  • 恒星云新春香港沙田CN2 VPS¥9.9起/月,成都高防¥144/月,大连BGP¥49/月,洛阳BGP¥49/月

    恒星云是一家成立于2017年国内 VPS 商家。主营香港沙田CN2 VPS,成都高防服务器,辽宁高防服务器、雅安高防服务器、西安高防服务器、深圳BGP和洛阳BGP。 本次新春特惠主要是国内高防产品,成都高防、大连BGP、洛阳BGP、香港沙田CN2 VPS。 香港沙田CN2 CPU 内存 宽带 硬盘 价格 1核 1G 1M 50G 9.9/月 4核 4G 5M 80G 99/月 8核 8G 5M 80G 166/月 16核 16G 10M 140G 222/月  成都高防100G CPU 内存 宽带 硬盘 防御 价格 4核 4G 5M ...

    03/02/2021
    5.6K0
  • Depay虚拟信用卡注册详细教程,不需要国内信用卡就可以充值ChatGPT Plus会员

    ChatGPT 现在很火,很多童鞋要去尝试,本站也写了一篇通过SMS-ACTIVATE虚拟手机号在国内注册ChatGPT详细教程。ChatGPT 现在因为访问量激增宕机,所以推出了 ChatGPT Plus 会员服务。有的童鞋想要充值 ChatGPT Plus 会员服务,国内绝大部分的信用卡都不被ChatGPT 接受,手中没有可绑定使用的欧美信用卡,可以通过注册一个 Depay 虚拟信用卡来解决。Depay 是一家为个人解决加密货币多场景应用的英国企业,持美国 MSB 牌照,并接受...

    24/02/2023
    1350
  • 宝塔面板下独立服务器挂载的 / 目录满了怎么办?

    昨晚上维护一台好久没怎么打理的独立服务器,上面有三个站,计划任务本地备份3个,发现默认建站 / 目录满了,而挂载的 home 目录还没用;随着网站内容不断膨胀,默认建站 / 目录肯定会不够用,备份也越来越大,可以将宝塔面板中更改默认建站目录和默认备份目录。 新建站点修改根目录 如上图这台独立服务器有两个盘,一个是 100GB 挂载的/目录,另一个 1747GB 挂载的是 home 目录。在宝塔后台设置就直接修改默认建站目录和默认备...

    09/07/2023
    3030
  • 如何去除WordPress文章中的图像大小属性

    WordPress程序在默认情况下,会将图像元素width和height属性添加到图像元素中。 这些属性会影响CSS宽度和高度属性,图片延迟加载时默认图片的大小,可通过 PHP、JavaScript 和 CSS 来删除属性,或者让其失效。 阅读推荐:WordPress 超高压缩率 支持webp图片格式的图片压缩插件:ShortPixel 代码禁用WordPress程序图片裁剪功能 WordPress网站上传图片出现http报错解决办法 从媒体库插入的图像中删除图像大小属性 删除图像大小属...

    技术教程 19/10/2019
    12.7K0
  • 打印机驱动怎么卸载删除的教程(Win7/Win10/Win11通用)

    怎么卸载删除打印机驱动,或者删除打印机驱动正在使用删不掉,删除打印机驱动提示正在使用,卸载打印机驱动非常麻烦,现在提供一下非常简单的删除卸载打印机驱动的教程,经过测试,在Win 7、Win 10、Win 11等系统都可以通用。 Win11、Win10、Win7基本操作思路是一样的,如果要删除需要到控制面板中操作,打开设备和打印机,点击任意一个打印机,上面会显示打印机服务器属性,大致思路是一样的。 在删除打印机驱动之前,关闭打印...

    24/08/2022
    750
返回顶部