假设您位于前端,您可以使用template_redirect
钩住你想要的东西:
function bbrew_check_wholesaler() {
global $post;
/**
* If we are viewing a single post page that has the specified category "foobar"
* and the user does not have the specified role "myrole" then redirect the user
* away from this page.
*/
if ( is_single() && has_category(\'foobar\', $post) && ! check_is_role(\'myrole\') ) {
wp_safe_redirect(home_url(\'away-from-post\'));
exit;
}
}
add_action( \'template_redirect\', \'bbrew_check_wholesaler\' );
注:在上述示例中,我们可以放弃使用
is_user_logged_in()
作为后续调用
wp_get_current_user()
将返回空
WP_User
对象(如果用户已注销)。
我会调整你的check_is_role()
功能如下:
function check_is_role($role){
$current_user = wp_get_current_user();
if ( in_array($role, $current_user->roles )
return true;
} else {
return false;
}
}
。。。因为您要检查的指定角色可能存在于
roles
属性,并且仅在索引0处。
您可以进一步扩展上述回调函数,
。。。以确定post对象是否具有指定的术语或所需的术语。