NIUBI
wordpress教程

WordPress 评论列表显示楼层实现代码 DUX 主题同款

1年前/ 57/ / WP爱好者/ 已收录/
导语: 前几天有人问我评论列表后面的楼层是怎么实现的,这东西根本不是我写的好吧。有现成的,为什么要自己写?用过大前端 DUX 主题的站长应该都知道,大前端 dux 主题的评论列表就有楼层计数功能,拿过来用不就行了?既然有人需要我还是分享下吧。大家也学习下大前端的写法,毕竟人家可是国内的大佬,值得学习。

前几天有人问我评论列表后面的楼层是怎么实现的,这东西根本不是我写的好吧。有现成的,为什么要自己写?用过大前端 DUX 主题的站长应该都知道,大前端 dux 主题的评论列表就有楼层计数功能,拿过来用不就行了?既然有人需要我还是分享下吧。大家也学习下大前端的写法,毕竟人家可是国内的大佬,值得学习。
WordPress 评论列表显示楼层实现代码 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 文件太大,随便你咯。

点点赞赏,手留余香

还没有人赞赏,快来当第一个赞赏的人吧!
admin给Admin打赏
×
予人玫瑰,手有余香
  • 2
  • 5
  • 10
  • 20
  • 50
2
支付
收藏 0 海报

版权归属:本文为原创文章,版权归 所有

本文链接:( 欢迎分享本文,转载请保留出处 )

免责声明:如发现本站有涉嫌抄袭侵权/违法违规的内容,请邮件/留言反馈,一经查实本站将立刻删除!

<< 上一篇

2019-04-15

下一篇 >>

2019-05-05

全部评论( 1 条 )
    最新评论
  1. 随之长风
    随之长风 湖南省常德市 电信

    啥时候给我加个楼层

    沙发 2019-04-25 08:22
扫一扫二维码分享