首页 > CMS > Wordpress > 正文

WordPress博客实现Ajax评论分页教程

2024-09-07 00:51:52
字体:
来源:转载
供稿:网友

WordPress的评论是普通的post提交了,为了让页面体验达到更好我们需要使用ajax来操作了,但wordpress博客没带此功能了,下面我们就一起来看看WordPress博客实现Ajax评论分页教程,希望文章能够帮助到大家.

下面详细介绍一下非插件实现 Ajax 评论分页的实现过程.

加载 jQuery 库

加载jQuery库,一般主题都会加载jQuery库的,如果你的没有,那就在主题的header.php文件的(/head)(注意把()换成<>)前面添加以下代码:

<script src="//ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>

开启 WordPress 评论分页

打开 WordPress 后台 – 设置 – 讨论,在“其他评论设置”中勾选分页显示评论,设置一下评论数目,这里的评论数目仅计算主评论,回复评论不作计算,我填了20,一是我的博文差不多这个数以内,而太多了影响整个文章的长度.

在后台开启评论分页后,在 comments.php 中需要添加分页导航的地方加入以下代码,如主题中有类似代码则无须再添加,另外代码中的 nav 标签为 HTML5 标签,若主题没有使用 HTML5 则有 div 代替即可.

  1. <nav class="commentnav"
  2. <?php paginate_comments_links('prev_text=上一页&next_text=下一页');?> 
  3. </nav> 

评论分页的 SEO

从 SEO 的角度看,评论分页会造成重复内容(分页的内容正文都一样,并且 keywords 和 description 也相同),这样对于评论很多的博客很容易因为重复内容太多而降权,因此需要在 SEO 方面作出一些处理,最为方便有效的方法是使用 meta 标签,在你的 header.php 原有的 meta 标签下加入以下代码,这样分页的页面便会禁止被搜索引擎收录,防止内容重复.

  1. <?php if( is_single() || is_page() ) { 
  2.     if( function_exists('get_query_var') ) { 
  3.         $cpage = intval(get_query_var('cpage')); 
  4.         $commentPage = intval(get_query_var('comment-page')); 
  5.     } 
  6.     if( !emptyempty($cpage) || !emptyempty($commentPage) ) { 
  7.         echo '<meta name="robots" content="noindex, nofollow" />'
  8.         echo "/n";  //Vevb.com 
  9.     } 
  10. ?> 

Ajax 评论

根据上文所述,现在主题中已经有评论分页了,要做到 Ajax 的评论分页,只需 JavaScript 的配合,不过在这之前首先要在评论列表前加入一个元素,用于在显示新一页评论列表时表示列表正在加载,假设主题模板 comments.php 的评论模块结构如下:

  1. <div class="commentshow"
  2.   <div class="comments-loading">Loading...</div> 
  3.     <ul class="commentlist"
  4.     <?php wp_list_comments('type=comment&callback=devecomment&max_depth=10000'); ?> 
  5.     </ul> 
  6.  
  7.   <nav class="commentnav"
  8.   <?php paginate_comments_links('prev_text=上一页&next_text=下一页');?> 
  9.   </nav> 
  10. </div> 

在你的主题 js 文件中加入以下 js 代码实现评论分页.

  1. // 评论分页 
  2. jQuery(document).ready(function($) { 
  3.     $body = (window.opera) ? (document.compatMode == "CSS1Compat" ? $('html') : $('body')) : $('html,body');//commentnav ajax 
  4.     $(document).on('click''.commentnav a'function(e) { 
  5.         e.preventDefault(); 
  6.         $.ajax({ 
  7.             type: "GET"
  8.             url: $(this).attr('href'), 
  9.             beforeSend: function() { 
  10.                 $('.commentnav').remove(); 
  11.                 $('.commentlist').remove(); 
  12.                 $('.comments-loading').slideDown(); 
  13.             }, 
  14.             dataType: "html"
  15.             success: function(out) { 
  16.                 result = $(out).find('.commentlist'); 
  17.                 nextlink = $(out).find('.commentnav'); 
  18.                 $('.comments-loading').slideUp(550); 
  19.                 $('.comments-loading').after(result.fadeIn(800)); 
  20.                 $('.commentlist').after(nextlink); 
  21.  
  22.             } 
  23.         }); 
  24.     });     
  25. }); 

加载条的 css(本博 css,仅供参考).

.comments-loading{display:none;background:none!important;height:50px;text-align:center;margin-bottom:20px;}

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表