远方的海
远方的海,WordPress,免费
2015 Aug 20 22 : 25

WordPress Ajax评论:不刷新页面提交评论

您当前的位置: 首页 > WordPress > WP技巧 > 正文
欢迎光临远方的海!您可能还对 WordPress建站免费资源最新IT动态 感兴趣,点击开启 悦读 模式。CTRL+D 快捷收藏本文,我们期待您再次光临!
[文章目录]

大家用的Ajax comments的代码都是Willin Kan留下的了,网上很多代码失效,或者教程不全,这里在参考了博主 @ZWW 的代码后,整理一下汇总把最新的办法发出来,在Wordpress4.2版本的环境下亲测可用。

Ajax评论的优点

  • 大气优雅,不刷新页面,用户体验好
  • 由于调用了不同的提交文件,有效的防止了垃圾评论
  • 看上去比较装逼

实现Ajax评论的前提

  • 条件一:先确定自己所用主题的评论列表调用是否使用 WordPress 官方推荐的 wp_list_comment() 函数(一般在 comments.php)
  • 条件二:如果“条件一”满足,那么看看 wp_list_comment() 有没有加回调函数参数callback,如果有请检查是否跟 WP 官方的回调函数示例类似,看这里点击前往
  • 条件三:看看评论框是否使用 comment_form() 函数生成,如果不是,请确保html结构差不多,特别是输入框的ID是否为 comment

其实大多数主题这三项都是满足的,然后下载所需要的文件,已经打包上传到百度云点击下载 解压得到comments-ajax.jscomments-ajax.php放到主题的根目录下。

一些必要的修改

其实大多数的主题多半都是对的,小小的略看一下就好,如果有错的则修改一下~~

1. 看看主题 header.php、footer.php 或者 functions.php 有没有这样的函数:如果有,删除或者注释掉。

wp_enqueue_script( 'comment-reply' );

2. 确定所用主题的 header.php 里面 </head> 前有 <php wp_head(); ?>footer.php 里面 </body> 前有 <?php wp_footer(); ?>
3. 直接在functions.php 加上如下代码来加载 jQuery 库和 comments-ajax.js 文件

if (!is_admin()) {
	function zfunc_scripts_method() {
		wp_enqueue_script('jquery');//如果已经有jquery,这行删除
		if (is_singular()||is_singular()) { 
                wp_enqueue_script('comments_ajax_js', (get_template_directory_uri()."/comments-ajax.js"), false, '1.3', true); } 
                  } 
        add_action('wp_enqueue_scripts', 'zfunc_scripts_method'); }

如果主题已经加载了jquery库,则删除上面的加载jquery的那行。

4. 在comment.php中查看form action函数,把其调用的php文件原先调用WP默认提交comments的wp-comments-post.php改成我们上传的comments-ajax.php,如下面的代码:

<form action="<?php bloginfo('template_url'); ?>/comments-ajax.php" method="post" id="commentform">

如果你还想更换的防止垃圾评论,这个时候还可以通过.htaccess文件添加一个规则,禁止外部对wp-comments-post.php的访问,代码如下,加在.htaccess中:

 RewriteEngine On
 RewriteCond %{REQUEST_URI} .wp-comments-post.php*

大功告成!

好文!分享给朋友,或者点个赞吧~

文章信息

分类:WP技巧

您可能也会喜欢

发表回复

Post Comment


  1. 66666 :

    哈哈哈哈哈哈

    2015-10-10
  2. 老杨 :

    没挂啊,https://fatesinger.com

    PS:你这访客不能回复?

    2015-9-2
    • Sven水神 :

      访客不能回复怎么说?= =

      2015-9-2
    • Sven水神 :

      哎 又可以开了 之前一直是503数据库错误的。

      2015-9-2
    • Sven水神 :

      @老杨 PS,点击小头像可以回复楼中楼哦!

      2015-9-2
  3. 老杨 :

    好像大发修改那个版本更好。

    2015-9-1
    • Sven水神 :

      可惜大发的博客貌似挂了。

      2015-9-2
  4. 众推不靠谱 :

    教程不错,不过好像很多主题都已经集成了这种功能

    2015-8-22
    • sven水神 :

      @众推不靠谱 我是最近加上的ajax,那天你提交bug就是因为这个修改后缓存没刷新。

      2015-8-22