我认为最好的钩子应该是\'template_redirect\'
, 当这个钩子被激活时,主查询已经设置好了,所以您可以查看被查询的对象,如果用户没有所需的功能,您可以将请求重定向到某个地方:
add_action( \'template_redirect\', function() {
if (
(
is_category( \'special-category\' )
|| is_singular() && has_category( \'special-category\', get_queried_object() )
) &&
! is_user_logged_in() || current_user_can( \'special-cap\' )
) {
wp_safe_redirect( home_url() );
exit();
}
} );