不带存档页面的自定义帖子类型

时间:2021-07-27 作者:Marcelo

我有一个自定义的帖子类型,叫做book\'has_archive\' => false. 当我访问我的网站时。com/book,正在加载我的网站。com/book/book-1,但我希望加载404页。这是WordPress的功能吗?如何禁用/更改此功能?

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

这是WordPress的功能吗?

是的,重定向是由redirect_canonical(), 但URL由redirect_guess_404_permalink():

redirect_guess_404_permalink()

尝试根据queryvars猜测404请求的正确URL。

所以你的情况是,WordPress试图找到一篇book 在slug中(post_name), 如果找到,WordPress会加载该帖子,而不是显示404错误页面。

如何禁用/更改此功能?

完全禁用redirect_canonical() (哪个WordPress core钩住了template_redirect) 如果当前URL路径正好是book 如中所示example.com/book/example.com/book?foo=bar.

例如,您可以使用parse_request hook 要禁用规范重定向,请执行以下操作:

add_action( \'parse_request\', \'wpse_392546\' );
function wpse_392546( $wp ) {
    if ( \'book\' === $wp->request ) {
        remove_action( \'template_redirect\', \'redirect_canonical\' );
    }
}
do_redirect_guess_404_permalink 禁用上述猜测正确URL的尝试。

因此,您可以使用上面选项1中使用的相同挂钩和函数,但替换remove_action() 符合:

add_filter( \'do_redirect_guess_404_permalink\', \'__return_false\' );