前几天,制作的主题isblog,里面的评论很简单,远远不能满足使用的要求,为了更好的实现评论交互功能,特地查找了很多资料,终于搞定评论交互功能,实现的基本是依据willin的内置嵌套评论专用ajax comments,喜欢isblog主题的朋友,可以到《主题isblog发布,完美支持WordPress》下载

主题isblog修订版

。不想使用修订版的朋友,在此给出修改方法,这种方法适合于各种WordPress主题。

需要修改的文件有:header.php,functions.php,comments.php,另外还需在你的空间上传三个文件:comment_gravatar.php,comments-ajax.js和comments-ajax,php,点三个文件。

好了,跟着我一步步来。

1、把三个文件上传到wp-content/isblog/文件夹后,打开header.php找到如下代码:

<script type="text/javascript" src="<?php bloginfo('stylesheet_directory'); ?>/js/jquery-1.7.1.min.js" ></script>
<script type="text/javascript" src="<?php bloginfo('stylesheet_directory'); ?>/js/jquery.placeholder.js" ></script>

在其下插入:

<?php if ( is_singular() ){ ?>
<script type="text/javascript" src="<?php bloginfo('template_directory'); ?>/comments-ajax.js"></script>
<?php } ?>

主要是加载comments-ajax.js文件。

2、修改comments.php,算了,这个还是直接替换吧,我把它与上面三个文件放到一块。

3、修改functions.php,主要是定义几个函数。代码直接给出:

// 评论回复/头像缓存
function isblog_comment($comment, $args, $depth) {
   $GLOBALS['comment'] = $comment;
global $commentcount,$wpdb, $post;
     if(!$commentcount) { //初始化楼层计数器
          $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);//获取主评论总数量
          $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;
         }
     }
?>
<li <?php comment_class('box'); ?> id="comment-<?php comment_ID() ?>">
   <div id="div-comment-<?php comment_ID() ?>">
      <?php $add_below = 'div-comment'; ?>
  <div>
   <?php  include(TEMPLATEPATH . '/comment_gravatar.php');  ?>
   <div>
   <?php
 if(!$parent_id = $comment->comment_parent){
  switch ($commentcount){
  case 2 :echo "沙发";--$commentcount;break;
  case 3 :echo "板凳";--$commentcount;break;
  case 4 :echo "地板";--$commentcount;break;
  default:printf('%1$s楼', --$commentcount);
   }
  }
 ?>
   </div>   
   <strong><?php comment_author_link() ?></strong> ——
   <span><?php comment_date('Y-m-d') ?> <?php comment_time() ?></span>
   <?php edit_comment_link('编辑','&nbsp;&nbsp;',''); ?></br>
   <div><?php comment_reply_link(array_merge( $args, array('reply_text' => '回复', 'add_below' =>$add_below, 'depth' => $depth, 'max_depth' => $args['max_depth']))); ?></div>
   <div></div>
   </div>
  <?php if ( $comment->comment_approved == '0' ) : ?>
   <span style="color:#C00; font-style:inherit ;margin-left:45px;">您的评论正在等待审核中...</span>
   <br />   
  <?php endif; ?>
  <?php comment_text() ?>       
  <div></div>  
  </div>
<?php
}
function isblog_end_comment() {
  echo '</li>';
}

//登陆显示头像
function isblog_get_avatar($email, $size = 48){
return get_avatar($email, $size);
}
//留言信息
function WelcomeCommentAuthorBack($email = ''){
 if(empty($email)){
  return;
 }
 global $wpdb;

 $past_30days = gmdate('Y-m-d H:i:s',((time()-(24*60*60*30))+(get_option('gmt_offset')*3600)));
 $sql = "SELECT count(comment_author_email) AS times FROM $wpdb->comments
     WHERE comment_approved = '1'
     AND comment_author_email = '$email'
     AND comment_date >= '$past_30days'";
 $times = $wpdb->get_results($sql);
 $times = ($times[0]->times) ? $times[0]->times : 0;
 $message = $times ? sprintf(__('过去30天内您有<strong>%1$s</strong>条留言,感谢关注!' ), $times) : '您已很久都没有留言了,这次想说点什么?';

 return $message;
}

好了,大体上就是这样了。

效果图如下:

交互评论功能

Last modification:April 11th, 2020 at 09:18 pm
如果觉得我的文章对你有用,请随意赞赏