代码实现WordPress评论列表显示楼层

代码实现WordPress评论列表显示楼层

作者 : 资源客 发布时间: 2019-11-23

大前端 DUX 主题相信很多博主都了解,是国内程序员开发的一款新闻资讯类主题,我们曾经也使用了一段时间,DUX 主题设计简约响应急速,深受很多建站博主好评,前几天有人问我 DUX 评论列表后面的楼层是怎么实现的,这东西根本不是我写的好吧。用过大前端 DUX 主题的站长应该都知道,大前端 dux 主题的评论列表就有楼层计数功能,拿过来用不就行了?大家也学习下大前端的写法,毕竟人家可是国内的大佬,值得学习。

该文件位于 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 文件太大,随便你哦。以上就是 DUX 主题同款 WordPress 评论列表显示楼层实现代码方法,希望您能学到有用的东西,当然如果你有更好的方法不妨与我们交流。

http://xzh.i3geek.com
1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
2. 分享目的仅供大家学习和交流,请不要用于商业用途及非法用途,否则后果自负!
3. 如果你也有好源码或者教程,可以到审核区发布,分享有金币奖励和额外收入!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 本站资源售价只是赞助,收取费用仅维持本站的日常运营所需!
7. 如遇到加密压缩包,默认解压密码为"qq301.com",如遇到无法解压的请联系管理员!
资源客是一个优秀的分享资源站,本站资源均为各位友友分享而来,特殊原创会标明如有侵犯版权等可联系删除

资源客 » 代码实现WordPress评论列表显示楼层