求解 WordPress 最新评论无法定位问题
自从解决了 Feedsky 无法正常更新和 Opera 下侧边栏错位的问题,我就学会了,有关于 WordPress 技术上的难题就直接作为日志发布出来求助。因为把问题发布到 WordPress 中文论坛中总是被无数水帖淹没,而且论坛的牛人又都喜欢潜水,只看不回,囧~~~所以还不如在我的日志里爆光率高一些,也可以引来一些 WordPress 大虾们为我解答疑难杂症。
因为本人喜欢折腾 WordPress,越是折腾,这问题就越多。最近就遇到一个棘手的 WordPress 难题,至少对我来说相当困难,而且这个问题有些离奇,我都不知道怎么描述,请大虾们要有点耐心了,我比较啰嗦。我的评论是用 WordPress 原生的 previous_comments_link 和 next_comments_link 两个函数进行分页的,免插件。我在后台开启了分页显示评论,并且每页显示10条评论(嵌套的评论数不被计算在内)。
当评论数未超过一页时,评论链接地址形如:http://日志地址/comment-page-1#comment-ID,而侧边栏的最新评论版块中该评论的相应链接地址形如:http://日志地址#comment-ID。虽然前后两者网址各不相同,但是点击侧边栏的最新评论还是能够跳转到相应评论之上。
当评论数超过一页时,评论链接地址形如:http://日志地址/comment-page-ID#comment-ID,而侧边栏的最新评论版块中该评论的相应链接地址依然形如:http://日志地址#comment-ID。前后两者网址依旧各不相同,但是这时候点击侧边栏的最新评论就不能跳转到相应评论之上,而是停留在该评论所对应的日志页面的起始位置。
也就是说,某条评论的实际所在的页面不在日志当前页,那么侧边栏上的该条最新评论就无法定位。这样就会造成一个问题,如果某访客的留言已经被埋在日志评论的第二、三……页中,则侧边栏的最新评论就只能跳转到这条评论的相应日志,而不能跳转到此评论上。
说的好费劲,连我自己都有些晕了,不知道大家有没有看懂,相信如果有相同经历的朋友应该会很快理解我的。下面是我的最新评论代码,也是非插件的,供大虾参考,希望能给予提示和帮助,在此先万分感谢各位咯~
global $wpdb;
$sql = "SELECT DISTINCT ID, post_title, post_password, comment_ID, comment_post_ID, comment_author, comment_date_gmt, comment_approved, comment_type,comment_author_url, SUBSTRING(comment_content,1,25) AS com_excerpt FROM $wpdb->comments LEFT OUTER JOIN $wpdb->posts ON ($wpdb->comments.comment_post_ID = $wpdb->posts.ID) WHERE comment_approved = '1' AND comment_type = '' AND comment_author != '万戈' AND post_password = '' ORDER BY comment_date_gmt DESC LIMIT 10";
$comments = $wpdb->get_results($sql);
$output = $pre_HTML;
foreach ($comments as $comment) {
$output .= "n<li>". " <a href="" . get_permalink($comment->ID) . "#comment-" . $comment->comment_ID . "" title="" . $comment->post_title . " 上的评论">".strip_tags($comment->comment_author) .": ". strip_tags($comment->com_excerpt) ."</a></li>";
}
$output .= $post_HTML;
$output = convert_smilies($output);
echo $output;
?>
-
Wordpress 侧边栏带头像的最新评论2009年12月26日 -
Wordpress 隐藏博主的最新留言2009年09月28日 -
Wordpress 之欢迎 OOXX 归来2011年01月19日 -
给 Wordpress 主题添加个性化小工具2011年01月16日
博主,评论怎么分页呢?
直接在原评论代码修改能实现了吗?
我是找答案的
至今无解。。。
其实那天也是用手机看你这篇日志,回去试试了自己的发现也存在这问题,于是晚上舍不得睡觉一直捣鼓,然后居然成功啦
global $wpdb;
$sql = "SELECT DISTINCT ID, post_title, post_password, comment_ID,
comment_post_ID, comment_author, comment_date_gmt, comment_approved,
comment_type,comment_author_url,
SUBSTRING(comment_content,1,20) AS com_excerpt
FROM $wpdb->comments
LEFT OUTER JOIN $wpdb->posts ON ($wpdb->comments.comment_post_ID =
$wpdb->posts.ID)
WHERE comment_approved = '1' AND comment_type = '' AND comment_author != '成' AND
post_password = ''
ORDER BY comment_date_gmt DESC
LIMIT 10";
$comments = $wpdb->get_results($sql);
$output = $pre_HTML;
foreach ($comments as $comment) {
$output= '';
$output .= $before."comment_ID) . "\" title=\"《" .
$comment->post_title . "》上的评论\">".strip_tags($comment->comment_author)
.": ". strip_tags($comment->com_excerpt)
." ".$after;
echo convert_smilies($output);
}
万戈,试试,我那里是成功解决了,我弄了一下午到现在
。。。刚刚看到这条留言
小心里边的引号,被你WP给替换成全角的了
我也发现了,懒的转回来,你发我一份吧,谢啦~
global $wpdb;
$sql = "SELECT DISTINCT ID, post_title, post_password, comment_ID,
comment_post_ID, comment_author, comment_date_gmt, comment_approved,
comment_type,comment_author_url,
SUBSTRING(comment_content,1,20) AS com_excerpt
FROM $wpdb->comments
LEFT OUTER JOIN $wpdb->posts ON ($wpdb->comments.comment_post_ID =
$wpdb->posts.ID)
WHERE comment_approved = '1' AND comment_type = '' AND comment_author != '成' AND
post_password = ''
ORDER BY comment_date_gmt DESC
LIMIT 10";
$comments = $wpdb->get_results($sql);
$output = $pre_HTML;
foreach ($comments as $comment) {
$output = '';
$output .= $before."comment_ID). "\" title=\"《" .
$comment->post_title . "》上的评论\">".strip_tags($comment->comment_author).": ". strip_tags($comment->com_excerpt)." ".$after;
echo convert_smilies($output);
}咋回事呢?
get_comment_link()应该可以在嵌套和分页评论下work的.
谢谢,可是我试过了,有的评论可以work,而有的还是不能定位
我直接使用了内部的widget,所以没什么问题,所以你最好看一下他内部的写法。
--
我懒得动。呵呵。。
大约在
"\wp-includes\default-widgets.php"(645行左右):
感谢提醒,我再研究一下去
试试
get_comment_link($comment->comment_ID)
谢谢马甲兄,这个我也试过了,也不能完全解决,一旦有嵌套的评论,此函数就失效了
你的博客是不是用了什么插件啊,打开速度贼快贼快的!还有啊,你的空间你确定是横天小张的吗?
我的博客没用过加速插件,不过我确实为加速做了不少优化
还有,我的空间确确实实是小张的没错
有点看不懂~~
我也是不懂,所以拿出来问问高手
万戈
这个,我绝对反对评论分页啊
那么多个地址 对百度不好的哦
可是不分也太长啦,100多条评论呢,鼠标滚轮都滚坏了
你的日志点击量巨大。
呵呵,新老朋友给面子罢了
你这个确实很不错啊。。。
T_T,能打开了,昨天我还打不开呢。
昨天又小挂了一会儿。。。
我是来向大虾学习的
我也正在向大虾求教呢
经测试,可以了
comments WHERE comment_approved = '1' ORDER BY comment_date_gmt DESC LIMIT 15 ";
$comments = $wpdb->get_results($sql);
$output = '最新评论';
foreach ($comments as $comment) {
$output .= "\n\t".$comment->comment_author.":comment_ID) . "\" title=\"" . $comment->comment_author . "-" . get_the_title($comment->comment_post_ID) . "\">" .strip_tags($comment->comment_content) . "...";
}
$output .= '';
echo convert_smilies($output); ?>
那个评论内容过长,你就截断一下
这应该是评论模板没做好的问题
恩,可能吧,就是不知道问题出在哪里了
<?php $src_count=25;$src_length=60;
$sql = "SELECT * FROM $wpdb->comments WHERE comment_approved = '1' ORDER BY comment_date_gmt DESC LIMIT 15";
$comments = $wpdb->get_results($sql);
$output = '<li><h3><span onclick="showhidediv("newcomment")">最新评论</span></h3><ul id="newcomment">';
foreach ($comments as $comment) {
$output .= "\n\t<li id=\"comment\"><span style=\"font-weight:bold;\">".$comment->comment_author.":</span><a href=\"" . get_comment_link($comment->comment_ID) . "\" title=\"" . $comment->comment_author . "-" . get_the_title($comment->comment_post_ID) . "\">" . get_the_title($comment->comment_post_ID) . "...</a></li>";
}
$output .= '</ul></li>';
echo convert_smilies($output); ?>
非常感谢,但是get_comment_link($comment->comment_ID) 依然不能彻底解决这个问题,如果有两层或两层以上嵌套,最新评论就无法定位了
我在default主题下,嵌套是可以定位的
在我这里只能实现无嵌套的评论,嵌套之后ID就乱了。。。杯具
帮顶,等来答案以绝后患
谢谢,有答案后我一定会公布的,分享给大家
顺便请教一个问题,如何实现回复自动邮件通知的功能
ps:主机支持邮箱,但dns没有改到主机上
可以用wp thread comment或者mail to commenter之类的插件实现
已经用了wp thread comment,但是无法自动邮件通知。
用mail to commenter试试?
应该是邮件系统的问题
比如我在后台设置[有人发表评论时]邮件通知,当有人留言时,却收不到邮件通知
你注册WP的时候,密码是通过邮件发送给你的吗?如果不是,就说明不支持mail()函数
记不清楚了。
空间应该是支持此函数的,但是我的dns没有转到空间,而是在gd直接设置的
额,这个我就不是很清楚了,不知道和DNS有没有关系的
我再去gg搜搜吧
先谢过了
坐等一边
已经有头绪了,马上搞定
不好意思,帮不了你
没关系,帮顶就是最大的支持,谢谢
不是看的太懂~~~
我自己也糊涂了。。。
我也开始折腾wp了,开始写主题。
厉害厉害,期待你的新主题哟~
又有新问题诞生了
好。已阅。
用插件可以准确定位,不这好像也难不倒zwo!
哈,zwo童鞋已解决此难题,爽了
你不说那么详细罗嗦我也知道你说啥了,因为我早折腾了,我懒,没写教程 - - ,而且我改了竟然在后来修改主题时又忘了更正
,下面是方法:
把
. get_permalink($comment->ID) . "#comment-" . $comment->comment_ID .
改为
. htmlspecialchars( get_comment_link( $comment->comment_ID ) ) .
效果可以去我博客看看
不过我认真检查了一下,也在你测试了一下,还是有些问题——或者说问题依旧,例如一篇文章已经有2页评论了,有人在第一页回复嵌套评论后的正确地址是:……/comment-page-1#comment-10242,但却显示为:……/comment-page-2#comment-10242,所以看来问题还是没得到解决,粗心大意啊
恩,我也发现这个问题了,刚想和你说呢。。。
用了其他几个函数搞不定,只有请教其他真正高手了。
我有个办法 ~
应该有效喔 ~
我邮件发给你吧 ~
木有收到你的邮件
- _ - 杯具了 ~ 我重发下 ~
10114948#qq.com,期待中~
不好意思,是我错,一鸡冻,邮箱写错了。。。
应该是101149488#qq.com
汗 我全往 life-studio#qq.com 发了 ~
已经收到了,正在测试,非常感谢
刚试了,出错呢
杯具了 这个貌似是旧版本的问题解决办法 ~
唔 等下看看吧 我待会儿本地测试下你这个主题看看 ~
有结果我叫你哈 ~
我自己看着也很饶,不知道有谁会耐心来看懂我写的问题
我是没办法了,我不会。
who来help help me~~~
我是晕了
我也很晕,但是楼下提供了不错的建议,我要去试试
paginate_comments_links('prev_text=Previous&next_text=Next');
你这个问题应该不难解决的,其实你已经找到了问题的原因,把侧边栏的评论链接改成http://日志地址/comment-page-ID#comment-ID这样的形式就行了,或者调用get_comment_link()来自动获取评论的链接地址。
另外,如果你的wordpress版本在2.7以上,评论的分页你可以用paginate_comments_links()这个函数就行了,而且效果也比较好
真是太感谢了,马上就去试试
嘿嘿,学我求救啦!哈哈
哈,没办法呢,自己的技术实力太有限,求高手帮忙~
哈哈!这方法非常好啊!
强烈支持技术贴!向万戈同学生命不息折腾不止的精神致以崇高的敬意!
不过我确实很折腾,哈哈
为什么我开启默认的评论分页没效果呢。。。
估计你的主题没这函数吧,或者不是2.7+的主题
测试用
我的也是这样,本来还想帮帮你
收到猪猪的邮件了,回家试试,谢谢哈~
过来添加关注度~~
哈,谢谢支持~
一直没把WP搞太懂~! 不是不愿意学~而是自己没花心事~哎~~~
我的WP~!啥时候可以来~!
我就是太闲了,天天整WP,呵呵
我是拿這個來改 http://wordpress.org/extend/plugins/wp-paged-comments/
你可以看看
哈,非常感谢!我去试试
这个问题我很早就注意到了,所以我评论30条才分页……
你看www.qiqiboy.com的,他就没有这情况,我测试过了
我用mg的插件显示侧边栏留言,没留意过这问题。。
果然,你没有这个问题
这是为什么!!!
mg的插件是什么呀?能否给个链接?或者mail给我瞧瞧:101149488#qq.com
先谢咯~
WP-RecentComments,http://www.neoease.com/wp-recentcomments/
好,万分感谢
我也是用MG12的主题,插件也是,没发现问题
呵呵一般遇到这问题 就蛮搜索引擎的疯狂查找 找不到就换主题!
如果搜索引擎能解决,我就不用愁了。。。关键是之前都没有人提出过这个问题,完全搜不到
至于换主题嘛,就算了,此款主题收费,换了多可惜
DZ要是免费我早用了
DZ有免费版,修修改改也能达到收费版的效果哒,哈哈
慢了几秒,连板凳都坐不到,直接地板.那个冷啊....
你把地下室也占了,你楼下的就没地儿了
我是菜鸟,不懂.只能帮顶.
帮顶就是支持,非常感谢
哎呀。刚刚重启了电脑就板凳了。
我相信,如果不重启,沙发肯定是你的,我已经领教过了
建议博主在颁酷礼时,考虑一下男女比例。
是个提议,谢谢,一定会采纳的,盼盼姐多抢几个沙发,奖品就非你莫属啦
虽然目前来说,万戈博客的男女比例是不均匀,但是也不能走后门啊!!!
哈哈,确实,男女比例严重失调,看来我没有足够的魅力吸引女生啊
你的暴光率高是因为你的博客热门啊。
别人的博客,例如我的,不应一定有这么多人看……
慢慢积累,总会有人关注的啦