这实际上是帖子的默认行为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
) 第页。