本来不想新开文章写这个“泛滥”+“牛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'
完。继续等我的新鼠标……
- 本文标题:适用于 WordPress3.5+ 的 Willin 版本 AJAX 评论提交
- 本文链接:https://zww.me/wordpress3-5-willin-ajax-comment.z-turn
- 发布时间:2013年03月06日 16:34
- 版权声明:除非注明,文章均为 zwwooooo 原创,转载请以链接形式标明本文地址!
悲催的我又回来了,为什么这样子改完以后,利用ajax刷新评论的效果时好时坏呢,可以被解答么
@小幻
具体没看你的代码,这里贴的只是方法,具体要根据自己主题简单修改一下以兼容,懂点jQuery会更好。
@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也是属于一知半解,折腾好几天了,实在是黔驴技穷。
3.9版本,按照楼主说的修改了以后,有两个奇怪的现象,一个是一条评论会发两次,另一个是提交评论以后,还是会刷新页面,中间会页面格式什么的全乱一下,然后再刷新回来,非常奇怪啊。
@小幻
jQuery代码没写好,检查一下吧,用firebug后者其他工具检查一下js有没有错误。
@zwwooooo
好的,js不是很会,我先捣鼓明白这都是什么意思然后调这个东西,祝我早日搞定。
我的主题不规范,修改好烦。。。
@生活有意思
Me too
哎,将js 放在另一个文件夹,结果出错,然后查看了下 js 代码,诶,各种讨巧的取路径,各种字符串拼接,真是乱啊。
@Riant
你可以改嘛,如改为 style.css 来取路径。或者干脆就用 wp 提供的 wp_localize_script 来传递 theme url
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
@破釜沉舟
呃,目录别随便设成777,很危险的……
@zwwooooo
好,那就是不能用这个ajax了,谢了
@破釜沉舟
这里的 ajax 不需要对目录文件进行写操作,只是要提交数据到数据库(评论),这很大可能是主机配置问题,因为这代码那么多人用而且都这么久了(几年)第一次看到你这样的错误提示。
不会吧,我也用的横天呢,
@破釜沉舟
这就不知道了,每个主题结构不同需要适当的对代码修改才能正常工作。
能不能详细分享下你这个评论的实现,觉得好赞
@Zouming
你是说哪个?我博客现在的么?其实原理是一样的,只是改了效果,自己学下基础的 jQuery 就能折腾
Warning: Undefined array key 1 in /www/wwwroot/zww/zww.me/wordpress/wp-content/plugins/wp-useragent/wp-useragent-detect-webbrowser-version.php on line 32
谢谢。期盼你有空了写篇详细的文章。
不算挖坟吧。
z大叔,你去看看我的博,回调是自己写的,把回调去掉用原生的wp_list_comments就可以,用回调就不行,什么原因?这里也不好说,邮件说吧
@浩纸
jQuery 选择器获取不到元素,因为结构不同,根据自己主题的结构修改 jq
@浩纸
试试我那里介绍的大发的方法吧。 https://cyhour.com/wordpress-new-ajax-comments.html
不知道,提交之后就出现
comment-ajax.php?ver=1411715367这个是404
@软件酷(WwW.Softku.NeT)
说明你没引用到 comment-ajax.php,也就是这文件 url 错误,检查一下
最近我折腾上瘾了,这个可以尝试下。
Warning: Undefined array key 1 in /www/wwwroot/zww/zww.me/wordpress/wp-content/plugins/wp-useragent/wp-useragent-detect-webbrowser-version.php on line 32
这个评论功能倒是得试一下
真实用