You are here: Home » All Categories » WordPress » WP Trick » WordPress 2.7~3.0原生嵌套评论的AJAX实现办法

WordPress 2.7~3.0原生嵌套评论的AJAX实现办法

Jun 14th, 2009 19:20 | Leave a comment?(202) Go to comments

最新的方法跳到文章最后面 2010.5.20 Update

从昨天开始就一直在折腾WordPress 2.7原生嵌套评论的AJAX效果,但根据 Lorz 的文章《WordPress 完美 AJAX 嵌套评论》愣是没折腾成功。后来在 Lorz 的帮助下,今天终于搞定了。

大家应该知道WordPress 2.7原生嵌套评论函数是wp_list_comment(),但不知什么原因很多评论插件都没有支持此函数,自从我自己折腾模板时评论函数就一直是使用wp_list_comment() ,也曾经折腾过试嵌套评论支持 Ajax,但一直就没成功过,原因嘛,就是不懂php+js,哈哈

既然折腾成功了,那么就要分享。喜欢折腾的朋友可以直接去 Lorz 的文章《WordPress 完美 AJAX 嵌套评论》,我这里只写出具体的步骤,原理什么的就算了,因为我也不怎么懂。

……由于直接粘贴代码出错,以前的内容删除,具体看下面

2009.7.7 Update

昨天开始跟willin讨论他编写的wp2.7嵌套评论,根据willin的comments-ajax.js和comments-ajax.php我修改上面讨论的wp2.7(wp2.8)嵌套,解决了一直存在的问题:

1. 嵌套回复后留言框不能自己回到下面
2. comments-ajax.php是放在wordpress根目录下的,不知怎样移到模版下(直接移到其他目录会出错)
3. 评论总数显示错误。

上面说了,粘贴代码会出错,所以具体的代码修改方法也不写了,直接提供comments-ajax.js和comments-ajax.php文件下载:ziddu网盘下载 / uushare下载

下载好后按照下面的步骤:

一、下载这两个文件后,用文本编辑软件打开 comments-ajax.js 查找"zwwooooo"然后按照标示的说明修改就可以了(要修改的地方我都用"zwwooooo"标示并写有说明),修改好后把这2个文件上传到你的主题目录下。

二、打开主题文件footer.php,把下面的代码加到<?php wp_footer(); ?>下面

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.2.6/jquery.min.js" type="text/javascript"></script>
<script src="<?php bloginfo('template_directory'); ?>/comments-ajax.js" type="text/javascript"></script>

三、然后打开主题文件comments.php,找到类似下面的

<h2 id="comments"><?php comments_number('0 Responses', '1 Responses', '% Responses' );?> to &#8220;<?php the_title(); ?>&#8221;</h2>

改为

<h2 id="comments"><span id="comment-num"><?php comments_number('0', '1', '%' );?></span> Responses to &#8220;<?php the_title(); ?>&#8221;</h2>

OK了,试试吧。

补充:(2009.7.8)

如果你的主题里面的 comment.php 中 wp_list_comment 的函数中有 callback ,那么请打开主题下的 function.php 。找到与 callback 同名的函数,将其中的 <li></li> 之间的夹杂 php 代码的 html 部分复制过来替换 comments-ajax.php 里面最后面那里的 <li></li> 之间的内容。接着将其中两个函数 comment_class 和 comment_reply_link 的参数改成下面的样子:

//……
comment_class('',$comment_id,$comment_post_ID);
//……
comment_reply_link(
array(
'depth' => $comment_depth,
'max_depth' => get_option('thread_comments_depth')
),$comment_id,$comment_post_ID)
//……

本文所说在 wordpress 2.7 和 2.8下测试成功,因为我已经升级为 wp2.8 ,所以 2.7 会稍微不同,但按原理来说下载的文件应该兼容 wp2.7 ,各位慢慢折腾吧。

2009.8.15 Update:

willin 最新折腾出的方法,很方便,不需要修改文章里说的两个文件就可以用了,而且效果比这个好:《WordPress 内置嵌套评论专用 Ajax comments

PS:不知是不是因为服务器环境问题,willin最新的方法我这里失效,但经过willin'阉割'的版本就OK了--把"刷新前可以编辑自己的新评论"功能去掉,效果大家可以直接评论试试。 2009.8.18 willin已经解决此问题了,只要重新下载下面的'willin提供的下载'就可以了

willin提供的下载地址: comments-ajax.zip

如果出现我'PS'所说的状况,可以用和我一样的: ziddu网盘

2009.10.21 Update:

下载 comments-ajax.zip (8.90k) (v1.26 2009/10/21 更新)
下载 comments-ajax(no-edit).zip (7.96k) (v1.26 2009/10/21 更新, “无在编辑版” )

2010.5.20 Update:

最新的 1.29 版本下载(支持WP2.9.x):uushare网盘 (2010.3.25 by willin)

最新的 1.3 版本下载(只能用在WP3.0.x):uushare网盘 (2010.5.20 by willin)

具体方法直接去这里吧:http://kan.willin.org/?p=1271

这里说说使用方法:

1. 解压下载到的压缩文件得到2个文件:comments-ajax.js、comments-ajax.php,把其放到到所使用的主题目录下

2. 打开所用主题的 header.php(有些主题是在 footer.php)找到下面的代码

<?php if ( is_singular() ) wp_enqueue_script( 'comment-reply' ); ?>

替换为

<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.2.6/jquery.min.js"></script>
<?php if ( is_singular() ){ ?>
	<script type="text/javascript" src="<?php bloginfo('template_directory'); ?>/comments-ajax.js"></script>
<?php } ?>

如果你所使用的主题评论结构够规范,那么就可以工作了

声明: 除非注明,ZWWoOoOo文章均为原创,转载请以链接形式标明本文地址
本文地址: http://zww.me/archives/24365

Filed under

WP Trick

| Tags:

, , ,

Related Posts

Most Popular

202 Comments.

⊕Leave a comment?
  1. willin willin Firefox 3.0.11Windows XP

    沒有... 要在最下面留言後再往上面找 6/24 的 php 代碼那篇的下面~ 出現一模一樣的兩篇...

    21楼
  2. zwwooooo zwwooooo Firefox 3.5Windows XP

    @willin 不知道是不是因为6/24那个留言有wp_list_comments的函数问题,其他文章不知有没有这个问题,我现在这里试试

    22楼
  3. zwwooooo zwwooooo Firefox 3.5Windows XP

    @willin 看来问题是因为在那个留言引用了wp_list_comments的函数,我现在加了code看还会不会?

    23楼
  4. zwwooooo zwwooooo Firefox 3.5Windows XP

    @willin 刚才的方法不行,我再修改了一下那留言,现在重新试试

    24楼
    • zwwooooo zwwooooo Firefox 3.5Windows XP

      嗯不会了,是《?php wp_list_comments(); ?》的原因,改为中文的《》就没问题了,说明这个嵌套Ajax评论OK了 :mrgreen:

  5. 无折腾不WordPress | Jinwen Say - pingback on 2009/07/09/ 23:05
    25楼
  6. AG AG Firefox 3.5Windows XP

    以前试过若干次鸟,均以失败告终,今天在Google Reader中看到Jinwen童鞋提到这篇文章,╮(╯▽╰)╭再折腾一次,O(∩_∩)O哈哈~

    26楼
  7. micogle micogle Google Chrome 2.0.172.33Windows XP

    改的挺好,效果不错~~~

    27楼
    • zwwooooo zwwooooo Firefox 3.5Windows XP

      基本实现,样式就不知则么搞了

      • micogle micogle Firefox 3.5Windows XP

        样式我觉得已经相当不错了,有层次感但是还不至于那么乱~~ 8)

        • zwwooooo zwwooooo Firefox 3.5Windows XP

          我也试过很多样式,就是层次感很难设定,现在这个也基本明朗

  8. 船长 船长 Firefox 3.5Windows XP

    来看看什么效果,准备抄袭

    28楼
  9. 小T 小T Firefox 3.0.6Windows XP

    今天照这个方法做了,似乎已经成功了

    30楼
  10. 123 123 Firefox 3.0.12Windows XP

    方法做了,似乎已经成功了 :lol:

    31楼
  11. willin willin Firefox 3.0.13Windows XP

    新東西出爐了! http://willin.atbhost.net/?p=1271
    改 me 域名了~ 不錯啊! :D

    32楼
    • zwwooooo zwwooooo Firefox 3.5.2Windows XP

      哈哈,又完善了,我去测试一下再更新到服务器去

  12. 小T 小T Firefox 3.0.13Windows XP

    更新了。。看看效果呢。。

    33楼
  13. 小Bee 小Bee Firefox 3.5.2Windows XP

    这个要收藏~~

    34楼
  14. 淘宝风向标 淘宝风向标 Tencent Traveler 4.0Windows XP

    看看去

    35楼
    • biao166 biao166 TheWorld BrowserWindows XP

      求救啊!我的出现如下错误:Fatal error: Call to undefined function get_post_status_obj() in /home/a2494514/public_html/wp-content/themes/cavano/comments-ajax.php on line 32
      32行代码:$status_obj = get_post_status_object($status);

      怎么解决!!! :!:

    • zwwooooo zwwooooo Firefox 3.6.3Windows 7

      @biao166 不知道你的wp版本是不是2.9.x,如果不是老版本wp导致的那么还是去请教willin吧: http://kan.willin.org

    • willin willin Firefox 3.5.9Windows XP

      @biao166 因為升級到 1.3 版, 是配合 WP 3.0 的, 請到我站去下舊版的, sorry...

  15. 要饭的 要饭的 Firefox 3.5.2Windows XP

    等我也试试看,这样回复就快点了

    36楼
  16. 还不错 还不错 Internet Explorer 6.0Windows XP

    不错的文章。。

    37楼
  17. 太阳博客 太阳博客 Opera 9.64Windows XP

    好东西,正需要,慢慢研究中。。。 :roll:

    38楼
  18. qilbore qilbore Internet Explorer 6.0Windows XP

    ajax动画图片在哪里修改?

    39楼
    • zwwooooo zwwooooo Google Chrome 2.0.172.43Windows XP

      这个默认用的是wp内部的图片,如果你要自己修改图片的话要修改comments-ajax.js的图片地址,找到pic_sb_url = wp_url + ‘/wp-admin/images/wpspin_dark.gif’,里面的/wp-admin/images/wpspin_dark.gif 改为你的图片所在地址,假如你的图片地址放在主题里面的images目录下,那么地址就是 /wp-content/themes/你的主题/images/ajax动画图片.gif

    • 原野 原野 Firefox 3.6b1Windows XP

      @zwwooooo 我正需要,测试下啊 :mad:

  19. 1111 1111 Internet Explorer 8.0Windows XP

    :twisted: :roll: :roll:

    40楼

Leave a Reply