好问题!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;
}
这就是一切都有效的证据!
(来源:mikeschinkel.com)