激活插件后,我想将具有特定域名(@ example.com)的所有用户的角色更改为自定义角色。
当用户注册并尝试使其适应我的需求时,我发现了一些用于执行此操作的代码,但是它似乎不起作用。激活插件后没有任何反应。角色没有改变,我也不会弹出任何错误,因此我不确定自己在做什么错。
我仍在学习PHP,所以如果这没有道理,请原谅我。
这是我的代码:
function set_role_by_email( $user_id ){
$user = get_user_by( 'id', $user_id );
$domain = substr(
strrchr(
$user->data->user_email,
"@"
), 1
); //Get Domain
$custom_role_domains = array( 'example.com' );
if( in_array( $domain, $custom_role_domains ) ){
foreach( $user->roles as $role )
$user->remove_role( $role ); //Remove existing Roles
$user->add_role( 'custom_role' ); //Add role to user
}
}
register_activation_hook( __FILE__, 'set_role_by_email' );
答案 0 :(得分:1)
您可以尝试下面的代码,看看它是否有效:
function set_role_by_email()
{
$users = get_users();
foreach ($users as $user) {
if (strpos($user->user_email, '@example.com')) {
foreach ($user->roles as $role) {
$user->remove_role($role);
}
$user->add_role('custom_role');
}
}
}
register_activation_hook(__FILE__, 'set_role_by_email');
确保此代码位于主插件文件中。