我正在尝试放置一组简单的代码,以便在登录后仅将“订阅者”重定向到主页(或所需页面)。我想用if( current_user_can(\'read\') ):
, 但这是一种全球能力,也适用于所有其他角色。所以我试过了get_role(\'subscriber\')
. 这是我的functions.php
代码(感谢Len):
function subscriber_redirection() {
global $redirect_to;
if( get_role(\'subscriber\') ) {
if ( !isset( $_GET[\'redirect_to\'] ) ) {
$redirect_to = get_option(\'siteurl\');
}
}
}
但它也在重定向管理员!
- How can I target only a specific user role for a purpose?
最合适的回答,由SO网友:s_ha_dum 整理而成
get_role
只是要返回有关角色的信息。它不会告诉您当前用户是否具有该角色。使用wp_get_current_user
用这样的支票:
function subscriber_redirection() {
global $redirect_to;
$user = wp_get_current_user();
if (in_array(\'subscriber\',$user->roles)) {
// user has subscriber role
if ( !isset( $_GET[\'redirect_to\'] ) ) {
$redirect_to = get_option(\'siteurl\');
}
}
}
我不知道你为什么用
global $redirect_to;
但永远不要对变量执行任何操作。