Blog

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

本来不想新开文章写这个“泛滥”+“牛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

声明: 除非注明,ZWWoOoOo文章均为原创,转载请以链接形式标明本文地址
本文地址: http://zww.me/wordpress3-5-willin-ajax-comment.z-turn

111 comments

  1. schiy schiy Google Chrome 25 Google Chrome 25 Windows 7 Windows 7

    好吧,我蛋疼的抢个沙发 :razz:

    沙发
  2. 空空裤兜 空空裤兜 Google Chrome 25 Google Chrome 25 Windows 7 Windows 7

    我能坐个地板

    板凳
  3. 哼哼猪 哼哼猪 Google Chrome 25 Google Chrome 25 Windows 7 Windows 7

    板凳?

    地板
  4. ......
  5. 小幻 小幻 Google Chrome 30 Google Chrome 30 Windows 7 Windows 7

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

    41楼
    • zwwooooo zwwooooo Firefox 28 Firefox 28 Windows 8.1 Windows 8.1

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

    • 小幻 小幻 Google Chrome 30 Google Chrome 30 Windows 7 Windows 7

      @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也是属于一知半解,折腾好几天了,实在是黔驴技穷。

  6. 小幻 小幻 Google Chrome 30 Google Chrome 30 Windows 7 Windows 7

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

    42楼
    • zwwooooo zwwooooo Firefox 28 Firefox 28 Windows 8.1 Windows 8.1

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

    • 小幻 小幻 Google Chrome 36 Google Chrome 36 Mac OS X 10.9 Mac OS X 10.9

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

  7. 生活有意思 生活有意思 Firefox 29 Firefox 29 Windows 8.1 Windows 8.1

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

    43楼
  8. Riant Riant Google Chrome 34 Google Chrome 34 Windows 8 Windows 8

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

    44楼
    • zwwooooo zwwooooo Firefox 29 Firefox 29 Windows 8.1 Windows 8.1

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

  9. 破釜沉舟 破釜沉舟 Firefox 29 Firefox 29 GNU/Linux GNU/Linux

    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

    45楼
    • zwwooooo zwwooooo Firefox 29 Firefox 29 Windows 8.1 Windows 8.1

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

    • 破釜沉舟 破釜沉舟 Firefox 29 Firefox 29 GNU/Linux GNU/Linux

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

    • zwwooooo zwwooooo Firefox 29 Firefox 29 Windows 8.1 Windows 8.1

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

    • 破釜沉舟 破釜沉舟 Firefox 29 Firefox 29 GNU/Linux GNU/Linux

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

    • zwwooooo zwwooooo Firefox 29 Firefox 29 Windows 8.1 Windows 8.1

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

  10. Zouming Zouming Firefox 22 Firefox 22 Windows XP Windows XP

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

    46楼
    • zwwooooo zwwooooo Firefox 32 Firefox 32 Windows 8.1 Windows 8.1

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

  11. zouming zouming Mozilla Compatible Mozilla Compatible iPhone iOS 7.1.2 iPhone iOS 7.1.2

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

    47楼
  12. 浩纸 浩纸 Google Chrome 39 Google Chrome 39 Windows 7 Windows 7

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

    48楼
  13. 软件酷(WwW.Softku.NeT) 软件酷(WwW.Softku.NeT) Google Chrome 38 Google Chrome 38 Windows XP Windows XP

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

    49楼
  14. 灰常记忆 灰常记忆 Firefox 35 Firefox 35 Windows XP Windows XP

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

    50楼
  15. jason jason GreenBrowser GreenBrowser Windows 7 Windows 7

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

    51楼
  16. 微而 微而 Google Chrome 35 Google Chrome 35 Windows 7 Windows 7

    :smile: 真实用

    52楼

Leave a Reply