为什么WordPress在评论后会将用户重定向到随机的帖子?

时间:2011-06-07 作者:João

在对我的一篇帖子发表评论后,WordPress将我重定向到另一篇随机帖子。只有在查看之前的帖子后,我才能看到我的评论被发布了。不过,为什么WordPress在发表评论后会随机给我发帖子?

这是我的comments.php 这是我的website (请不要在其他地方发布,因为我明天就要发布了)。不过,您可以随意测试这些评论。我会在启动之前清除它。有什么建议吗?

PS:我没有使用插件,这个bug在其他主题上也不起作用。还有,我用的是/%postname%/ permalinks。

3 个回复
最合适的回答,由SO网友:Otto 整理而成

您正在以错误的方式影响主$post变量的值。

WordPress模板由一个主循环组成。该循环位于单个帖子页面上,显示唯一的帖子(或页面)。

当comments表单运行时,它希望循环中的最后一篇文章就是您正在评论的文章。但是,如果在事后处理主循环(例如执行另一个query\\u posts()或以任何方式更改全局$post变量),那么您将弄糟这一点。这就是你的帖子上发生的事情。

如果你看看http://joaoramos.org/sala-de-ser/ 你会看到那篇帖子的ID号是635,但评论表单认为是630。我很惊讶这些评论会出现在正确的页面上。

具体来说,这里发生的事情是你的边栏做错了™. 如果您注意到,侧边栏中的最后一个条目是http://joaoramos.org/via/ 顺便说一句,这是630号邮政编码。

在进行二次循环时,应创建新的WP\\U查询对象,而不是修改主对象,并且如果可能,循环不应修改任何全局变量。

这个问题没有快速解决方法。重写侧边栏,不要弄脏主循环。

编辑:不知道这个。只需在侧栏循环运行后添加对wp\\u reset\\u postdata()的调用,即可将全局$post信息修复回原样。

SO网友:Rarst

处理注释后的重定向是通过以下代码行执行的wp-cmments-post.php:

$location = empty($_POST[\'redirect_to\']) ? get_comment_link($comment_id) : $_POST[\'redirect_to\'] . \'#comment-\' . $comment_id;
$location = apply_filters(\'comment_post_redirect\', $location, $comment);

wp_redirect($location);
因此,有三种可能出错的方式:

刚刚创建的注释ID不正确根据您提供的信息,无法真正猜测其中哪一个可能有故障。

SO网友:Eh Jewel

我也遇到了同样的问题,也解决了这个问题。可能,您在single.php 文件似乎你错过了使用wp_reset_postdata() 结束post循环后的函数。请签入您的代码single.php

结束

相关推荐

QUERY_POSTS中自定义帖子类型的ID参数是什么?

在管理部分,我使用quesry帖子来获取自定义帖子的标题和内容此query\\u posts(\'post\\u type=sfnewsletter\');将获得我需要的内容,但不幸的是,我现在需要做的是通过表单传递自定义帖子的ID,然后检索该内容我试过了query_posts(\'p=32\'); query_posts(\'page_id=32\'); query_posts(\'page=32\'); query_posts(\'sfnewsletter_id=3