奇怪的帖子分页url重定向

时间:2020-06-25 作者:Reigel

我有以下示例链接:/uncategorized/hello-world/如果我在帖子内容上加了1个分页符,重定向如下:

/uncategorized/hello-world/1 =&燃气轮机;/uncategorized/hello-world/
重定向是我的理想行为。

/uncategorized/hello-world/2 =&燃气轮机;/uncategorized/hello-world/2
无重定向,应为。

/uncategorized/hello-world/3 =&燃气轮机;/uncategorized/hello-world/
重定向是我的理想行为。

BUT 如果我删除了帖子内容上的分页符/uncategorized/hello-world/1 工作
如果页面为1,则删除url中的1,但除此之外,它接受数字。

/uncategorized/hello-world/1 =&燃气轮机;/uncategorized/hello-world/
/uncategorized/hello-world/2 =&燃气轮机;/uncategorized/hello-world/2
/uncategorized/hello-world/99 =&燃气轮机;/uncategorized/hello-world/99

有没有办法让任何数字都可以重定向,就好像根本没有数字一样。

/uncategorized/hello-world/1 =&燃气轮机;/uncategorized/hello-world/
/uncategorized/hello-world/2 =&燃气轮机;/uncategorized/hello-world/
/uncategorized/hello-world/99 =&燃气轮机;/uncategorized/hello-world/
但只有在帖子上没有添加分页符时。

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

这实际上是帖子的默认行为not 有任何分页符(即<!--nextpage--> 标签)。

更具体地说,在redirect_canonical(), WordPress仅在帖子有分页符标记且页码无效时(例如,只有2页时请求第3页)才执行重定向。否则(即没有分页符),这些分页的URL/请求被视为有效,WordPress除了第一页(例如。/hello-world/1) 因为该内容被视为/hello-world.

所以对于那些;“有效”;如果要将请求重定向到第一页,可以使用pre_handle_404 hook 像这样:

add_filter( \'pre_handle_404\', function ( $bool ) {
    if ( is_singular( [ \'post\', \'page\', \'etc\' ] ) && get_query_var( \'page\' ) &&
        false === strpos( get_queried_object()->post_content, \'<!--nextpage-->\' )
    ) {
        wp_redirect( get_permalink( get_queried_object() ) );
        exit;
    }

    return $bool;
} );
您还可以使用wp 钩子,但是pre_handle_404 因为它被称为“第一”,所以看起来更好:

add_action( \'wp\', function ( $wp ) {
    if ( is_singular( [ \'post\', \'page\', \'etc\' ] ) && get_query_var( \'page\' ) &&
        false === strpos( get_queried_object()->post_content, \'<!--nextpage-->\' )
    ) {
        wp_redirect( get_permalink( get_queried_object() ) );
        exit;
    }
} );
我正在使用is_singular() 以单一请求为目标,如单个Post(Post类型post) 第页。