停止WordPress将评论-页面-1重定向到发布页面?

时间:2011-02-11 作者:Shaun

我希望在帖子上有一个单独的评论页面,以便此页面:/2011/02/post-name/ 只需显示帖子,然后单击链接即可查看评论,并进入如下页面:/2011/02/post-name/comment-page-1/

然后我会检查URL,看看其中是否有“comment-page-x”,如果有,我会以不同的方式显示页面(删除帖子,这样人们就不必每次都滚动过去,而且风格也会有所不同)。

这会起作用,但WordPress会重定向comment-page-1 到贴子页-我需要它来保持comment-page-1 URL中有。

这可能吗?我该怎么做?谢谢

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

好问题!WordPress将您的评论页码分配给查询变量\'cpage\' 当您的URL/comment-page-1/ 在最后。所以你的罪魁祸首是redirect_canonical() 函数,第192行/wp-includes/canoncial.php.

if ( get_query_var(\'paged\') || is_feed() || get_query_var(\'cpage\') ) {
redirect_canonical() 函数被设置为一个动作,我们可以做的是插入我们自己的函数来调用,让我们的函数设置\'cpage\' 查询var到false, 呼叫redirect_canonical(), 然后设置\'cpage\' 回到过去;这将阻止WordPress重定向到你身上。

要插入自己的函数,需要调用两个挂钩\'init\'\'template_redirect\' 就像这样确保设置\'init\'do_action() 内置WordPress核心,添加redirect_canonical():

add_action(\'init\',\'yoursite_init\',11); //11=lower priority
function yoursite_init() {
  remove_action(\'template_redirect\',\'redirect_canonical\');
  add_action(\'template_redirect\',\'yoursite_redirect_canonical\');
}

add_action(\'template_redirect\',\'yoursite_redirect_canonical\');
function yoursite_redirect_canonical($requested_url=null, $do_redirect=true) {
  $cpage = get_query_var(\'cpage\');
  set_query_var(\'cpage\',false);
  redirect_canonical($requested_url, $do_redirect);
  set_query_var(\'cpage\',$cpage);
}
那你当然需要用你的\'cpage\'. 您可以检查get_query_var(\'cpage\') 或者您可以添加另一个钩子,允许您创建特定于注释的模板,这就是我所做的。它将添加查找主题模板文件,该文件与通常加载的文件相同,但具有[comments].php 在名称末尾,而不是.php, i、 e。single[comments].php. <请注意,我将此过滤器的优先级设置为11;如果使用的插件在挂钩后添加自身,则可能需要将其设置为更大的数字:

add_filter(\'single_template\',\'yoursite_single_template\',11);
function yoursite_single_template($template) {
  if (get_query_var(\'cpage\'))
    $template = str_replace(\'.php\',\'[comments].php\',$template);
  return $template;
}
这就是一切都有效的证据!

Screenshot of Custom WordPress Page Template for Comments
(来源:mikeschinkel.com)

结束

相关推荐

I can't view or add comments

嘿,那里。我刚刚建立了这个网站。http://www.paledogstudios.com 它工作得很好,只是我似乎看不到过去的评论(这个博客是从blogger导入的)或添加评论。我知道这是代码而不是设置,因为有人告诉我,但他没有进一步帮助我。他说这可能在索引上。php帮助