删除分页后,分页的单个帖子不会重定向到主URL

时间:2016-02-05 作者:NewUser

我用过

<!--nextpage-->
(Codex) 把几篇文章分页(分开)。现在我从帖子中删除了所有下一页html部分。一切看起来都很好。不幸的是,旧的URL

sample.com/tipps-for-me/2

sample.com/tipps-for-me/3

sample.com/tipps-for-me/4
。。。

不重定向到主urlsample.com/tipps-for-me. 相反,它显示与主url完全相同的(全部)内容(sample.com/tipps-for-me) 当我观看时sample.com/tipps-for-me/2, sample.com/tipps-for-me/3, sample.com/tipps-for-me/4 等等

I do not use any redirect Plugin or redirect function anywhere. Any idea how to fix this problem?

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

编辑我已经为您的问题找到了可能的解决方案。我们可以尝试以下方法

将我们自己的行动添加到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并重定向回第一页。这真的是你唯一一次成功使用URLsample.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的角度来看,它并没有任何影响,所以也没什么好担心的。

相关推荐

Add css class to Pagination?

我一直在使用以下代码:$current_page = get_query_var(\'paged\'); $current_page = max( 1, $current_page ); $per_page = 12; $offset_start = 1; $offset = ( $current_page - 1 ) * $per_page + $offset_start; $post_list = new WP_Query(array(&#x