WordPress Ajax 确实不错,不刷新页面就能提交评论,一是效果很炫,二是可以屏蔽垃圾评论(这点我一开始没有理解,现在懂了,下一篇文章再说)。大家用的 Ajax Comments 代码好像都是高手 Willin Kan 的吧?确实好用,但时间长了,都不记得当初是怎么安装的了。这里整理了一下,写个完整教程,亲测在最新的 WordPress 4.x 上可用。

实现 Ajax 的前提

一:先确定自己所用主题的评论列表调用是否使用 WordPress 官方推荐的 wp_list_comment() 函数(一般在 comments.php)。

二:如果“条件一”满足,那么看看 wp_list_comment() 有没有加回调函数参数callback,如果有请检查是否跟 WP 官方的回调函数示例类似。

三:看看评论框是否使用 comment_form() 函数生成,如果不是,请确保html结构差不多,特别是输入框的ID是否为 comment。

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

植入 Ajax 评论

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

1、看看主题 header.php、footer.php 或者 functions.php 有没有这样的函数:如果有,删除或者注释掉:
wp_enqueue_script( 'comment-reply' );

2、确定所用主题的 header.php 里面 前有 和 footer.php 里面 前有

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,如下面的代码:

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

这个我就不加了,直接删除掉 wp-comments-post.php 好了。