编辑我已经为您的问题找到了可能的解决方案。我们可以尝试以下方法
将我们自己的行动添加到template_redirect
我们在这里执行以下操作
检查当前请求是否为分页的单贴子页面,并且我们没有<!--nextpage-->
在帖子内容中添加标签。
如果一切正常,我们将手动重定向到帖子的第一页
以下是代码:
add_filter( \'template_redirect\', function()
{
if ( is_single()
&& false === strpos( get_queried_object()->post_content, \'<!--nextpage-->\' )
&& get_query_var(\'page\')
) {
wp_redirect( get_permalink( get_queried_object_id() ) );
die;
}
});
重要注意事项这也会将当前分页的单篇文章页面重定向到第一页,即使我们使用
content_pagination
滤器代码只接受
<!--nextpage-->
标记,因此您需要确保不会使用除
<!--nextpage-->
标签
END OF EDIT
原始答案
我非常确定,这将需要大量的调查和大量的测试、宣誓和重写代码,才能使这项工作正常进行。
不幸的是,当你有一个像sample.com/tipps-for-me/4
, 据我记忆所及,WordPress在3.3.1版中遇到WordPress时,会一直接受URL结构是有效的,即使一篇文章只有一个页面,所以这并不是什么新鲜事。
WordPress 4.4看到了新的content_pagination
正在添加筛选器,并将以下代码段添加到redirect_canonical
$next = \'<!--nextpage-->\';
if ( $p && false !== strpos( $p->post_content, $next ) && ! empty( $this->query_vars[\'page\'] ) ) {
$page = trim( $this->query_vars[\'page\'], \'/\' );
$success = (int) $page <= ( substr_count( $p->post_content, $next ) + 1 );
}
如果您拥有
<!--nextpage-->
在帖子中标记,每一页后的最后一页后的
<!--nextpage-->
标记将404并重定向回第一页。这真的是你唯一一次成功使用URL
sample.com/tipps-for-me/4
当该页位于
<!--nextpage-->
标签如果我们删除
<!--nextpage-->
标签,我们仍然可以成功输入任何URL,而不必像WordPress 4.4之前那样重定向
然而,这段代码产生了我提出的其他问题(尚未解决的问题)trac ticket 因为,在我和@birgire之间,我们在一两周前处理了以下问题
我已在上述trac记录单中要求从中删除代码
redirect_canonical()
为了避免它带来的新问题,直到我们找到一个解决方案来处理单篇文章的分页。
我认为现在真正让这件事变得非常困难的是新的content_pagination
过滤器,因为我们需要找到一种方法来正确处理通过过滤器添加的页面,无论是否使用<!--nextpage-->
标签另一个问题是,在WordPress 4.4之前,人们使用the_post
筛选以将附加页面添加到单个帖子中<!--nextpage-->
标记,因此这会增加更多需要处理的问题,这样我们就不会破坏那些仍然依赖旧的有效方法的站点
总之,在不久的将来肯定不会有解决方案。像许多其他存在的bug一样,所有帖子都是由WP_Query
在无效的术语或分类法上,或在空的搜索提交上,或在tax_query
, 解决这些问题确实没有具体的解决方案。我敢打赌,其中一些问题将永远不会得到解决,并将一直持续到几天结束。
从SEO的角度来看,它并没有任何影响,所以也没什么好担心的。