给 WordPress 启用 Ajax 评论(代码版)
其实谁不想自己的博客拥有又炫又实用的 AJAX 评论呢。找了很多插件版的,都不太好用,而且还拖慢了速度。用句万戈的话说:能用代码改的效果绝对不用插件。这个AJAX效果也是他极力推荐给我的。来自于 Willin 大师。
代码下载:
下载 comments-ajax-1.29.zip v1.29 适用於 WP 2.8 ~ 3.0
下载 comments-ajax-1.3.zip (v1.3 2010/5/20 更新) 用了新函数 get_post_status_object(), 只能在 WP 3.0 以上使用。
安装方法:
解压之后, 将 comments-ajax.js 及 comments-ajax.php 放在模板所在目录
在 header.php 找到
1 2 | <?php if ( is_singular() ) wp_enqueue_script( 'comment-reply' ); ?> <?php wp_head(); ?> |
用下面几行取代:
1 2 3 4 5 | <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.2.3/jquery.min.js"></script> <?php wp_head(); ?> <?php if ( is_singular() ){ ?> <script type="text/javascript" src="<?php bloginfo('template_directory'); ?>/comments-ajax.js"></script> <?php } ?> |
因为 comments-ajax.js 已合併了 WP 的 comment-reply.js, 所以不必再叫用原來的 wp_enqueue_script( 'comment-reply' )
如果你的模板够标准, 这样就可以正常工作了
如果有任何運行不正常, 請繼續看以下注意事項:
1. 安裝前, 請先確認 WordPress 內置嵌套評論已正常運作. 如果不是內置嵌套評論, 會出問題的.
2. 各式模板設計不同, 請檢查 comments.php 是否夠標準, 儘量不修改模板, 只要對應修改本文件, 以免 css 亂套.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | ◎標準模板是指: "評論數" id="comments" (WP 3.0 用的是 id="comments-title") 例: <h3 id="comments"><?php comments_number( ...有%條評論... </h3> 已知有不少模板用的不是 "comments", 它的 "comments" 已用到別地方, 如果評論提交後, 評論數位置出現很多源代碼, 通常是這問題, 要特別留意! ps. WP 3.0 用的是 id="comments-title", 新版我已將 "comments" 改 "comments-title", 如果你要用以前的 "comments", 請在 comments-ajax.js 第 25 行更改. "評論列表" id="commentlist" 例: <ol id="commentlist"> 注意是 ol 不是 ul. "表單" id="commentform" 例: <form action="<?php echo get_option('siteurl'); ?>/wp-comments-post.php" method="post" id="commentform"> "評論框" id="respond" (是含 author, email, url, comment) 例: <div id="respond" ... > "評論區" id="comment" 例: <textarea name="comment" id="comment" ... > "提交" id="submit" 例: <input ... id="submit" ... > ※以上所用的 id 標簽是 js 運作的重要關鍵! 請確認與模板對應無誤! |
3. 本程式主要提供 Ajax comments 功能, css 已儘量配合原模板輸出. 如果還有 css 需求, 請自行修改.
4. 在 comments-ajax.php 最下方有評論格式, 若你的 functions.php 有 mytheme_comment(), 請對應覆蓋, 且拿掉 "回覆" 鏈接.
发现自己的模板就不是标准版的。。。修改了一下才搞定了~
/* 以下纯粹是给自己看的,自己的修改记录,大家可以无视 */
1 2 3 | <?php if ( have_comments() ) : ?> <div id="comments"> <h3><?php comments_number(__('No Responses' ,'DeepMix'), __('One Response' ,'DeepMix'),__('% Responses' ,'DeepMix'));?> <?php _e('to', 'DeepMix') ?> “<?php the_title(); ?>”</h3> |
修改成了
1 2 | <div id="comments"> <h3 id="number"><?php comments_number(__('No Responses' ,'DeepMix'), __('One Response' ,'DeepMix'),__('% Responses' ,'DeepMix'));?> <?php _e('to', 'DeepMix') ?> “<?php the_title(); ?>”</h3> |
手动阀洒洒地方
那我就测试一下这个AJAX回复效果
很早写的文章了。现在已经换模板了。效果不是之前的了。
请问..不能输出在原来的ol标签里么.. 现在是生成了一个新的ol..生成一个新的ol就算了..可以生成到原来ol标签的上面么..现在和表单生成在一起.
把原来的OL ID或CLASS消掉不就可以了吗?
正在写了
请问,我的WordPress博客按照上述方法设置之后不起作用是怎么回事?
我的模板是N年前的了。。。So,找个新版的看看吧。