适用于 WordPress3.5+ 的 Willin 版本 AJAX 评论提交

» 2013-03-06 WordPress 111条评论

本来不想新开文章写这个“泛滥”+“牛X”的 Willin 版本 Ajax 评论提交,但是又懒得去更新老文章(有点乱),而且由于网盘的杯具,以前上传的很多都不能下载了,总是有朋友说“求下载”,加上 Willin 退出折腾 WP 很久了,不会有后续版本的更新了,所以我抽空更新了一下,算是例行为博客除草。

只简单说说,具体详细的方法自己琢磨折腾吧,网上教程大把。

1. 前提

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

2. 下载(zwwooooo 修改过的适用于 WordPress 3.5+ 的 willin AJAX 评论提交 1.3 版本)

130306-comments-ajax-1.3-zww-wp3.5.2.zip:百毒网盘

解压后得到大家非常熟悉的2个文件:comments-ajax.js、comments-ajax.php,然后放到所使用的主题目录下

3. 必要的修改

a)看看主题 header.php、footer.php 或者 functions.php 有没有这样的函数:

wp_enqueue_script( 'comment-reply' );

如果有,删除或者注释掉。(注:好像不去鸟也可以)

b)确定所用主题的 header.php 里面 </head> 前有 <php wp_head(); ?> 和 footer.php 里面 </body> 前有 <?php wp_footer(); ?>

c)直接在 functions.php 加上如下代码来加载 jQuery 库和 comments-ajax.js 文件

if (!is_admin()) {
	function zfunc_scripts_method() {
		wp_enqueue_script('jquery');
		if (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 库,可以删除 wp_enqueue_script('jquery');)

ps:默认没开启评论“再编辑”功能,如有需要修改 comments-ajax.js 第 11 行

edit_mode = '0'

改为

edit_mode = '1'

完。继续等我的新鼠标……

zww
or
oooo

“适用于 WordPress3.5+ 的 Willin 版本 AJAX 评论提交”有111条评论

  1. 小幻 says:

    悲催的我又回来了,为什么这样子改完以后,利用ajax刷新评论的效果时好时坏呢,可以被解答么 :sad:

    1. zwwooooo says:

      @小幻
      具体没看你的代码,这里贴的只是方法,具体要根据自己主题简单修改一下以兼容,懂点jQuery会更好。

    2. 小幻 says:

      @zwwooooo
      'drone_comments' ) ); ?>
      这是评论页面里有callback的那句。
      对应的,在function.php里关于这个函数的定义如下:
      if ( ! function_exists( 'drone_comments' ) ) {
      function drone_comments( $comment, $args, $depth ) {
      $GLOBALS['comment'] = $comment; ?>

      <div id="comment-">

      · $depth, 'max_depth' => $args['max_depth'] ) ) ) ?>

      comment_approved == '0' ) : ?>

      <?php
      }
      }

      我按照上面的这个代码改了comment-ajax.php里提到要改的那段代码,但是效果就时好时坏,有时评论提交了以后还是会刷新页面,而且速度还有点儿慢。审查元素,也会发现action指向的是wp-comment-post.php,而不是comment-ajax.php,不懂PHP,对jQuery也是属于一知半解,折腾好几天了,实在是黔驴技穷。

  2. 小幻 says:

    3.9版本,按照楼主说的修改了以后,有两个奇怪的现象,一个是一条评论会发两次,另一个是提交评论以后,还是会刷新页面,中间会页面格式什么的全乱一下,然后再刷新回来,非常奇怪啊。

    1. zwwooooo says:

      @小幻
      jQuery代码没写好,检查一下吧,用firebug后者其他工具检查一下js有没有错误。

    2. 小幻 says:

      @zwwooooo
      好的,js不是很会,我先捣鼓明白这都是什么意思然后调这个东西,祝我早日搞定。

  3. 我的主题不规范,修改好烦。。。

  4. Riant says:

    哎,将js 放在另一个文件夹,结果出错,然后查看了下 js 代码,诶,各种讨巧的取路径,各种字符串拼接,真是乱啊。

    1. zwwooooo says:

      @Riant
      你可以改嘛,如改为 style.css 来取路径。或者干脆就用 wp 提供的 wp_localize_script 来传递 theme url

  5. b)确定所用主题的 header.php 里面 前有 和 footer.php 里面 前有

    没有这个还能弄吗,
    弄了之后点击评论出现如下提示[改成了777权限]
    Internal Server Error

    File "/home/pfczorg/domains/pfcz.org/public_html/wp-content/themes/twentytwelve/comments-ajax.php" is writeable by group

    1. zwwooooo says:

      @破釜沉舟
      呃,目录别随便设成777,很危险的……

    2. @zwwooooo
      好,那就是不能用这个ajax了,谢了

    3. zwwooooo says:

      @破釜沉舟
      这里的 ajax 不需要对目录文件进行写操作,只是要提交数据到数据库(评论),这很大可能是主机配置问题,因为这代码那么多人用而且都这么久了(几年)第一次看到你这样的错误提示。

    4. 不会吧,我也用的横天呢,

    5. zwwooooo says:

      @破釜沉舟
      这就不知道了,每个主题结构不同需要适当的对代码修改才能正常工作。

  6. Zouming says:

    能不能详细分享下你这个评论的实现,觉得好赞

    1. zwwooooo says:

      @Zouming
      你是说哪个?我博客现在的么?其实原理是一样的,只是改了效果,自己学下基础的 jQuery 就能折腾

  7. zouming says:

    谢谢。期盼你有空了写篇详细的文章。

  8. 浩纸 says:

    不算挖坟吧。
    z大叔,你去看看我的博,回调是自己写的,把回调去掉用原生的wp_list_comments就可以,用回调就不行,什么原因?这里也不好说,邮件说吧

    1. zwwooooo says:

      @浩纸
      jQuery 选择器获取不到元素,因为结构不同,根据自己主题的结构修改 jq

    2. 大肥羊 says:

      @浩纸
      试试我那里介绍的大发的方法吧。 :mrgreen: https://cyhour.com/wordpress-new-ajax-comments.html

  9. 不知道,提交之后就出现
    comment-ajax.php?ver=1411715367这个是404

    1. zwwooooo says:

      @软件酷(WwW.Softku.NeT)
      说明你没引用到 comment-ajax.php,也就是这文件 url 错误,检查一下

  10. 最近我折腾上瘾了,这个可以尝试下。

  11. jason says:

    这个评论功能倒是得试一下

  12. 微而 says:

    :smile: 真实用

发表评论

昵称 *

网址

B em del U Link Code Quote