Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/google-app-engine/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 在自定义WordPress插件激活后,更改具有特定域电子邮件地址的所有用户的角色_Php_Wordpress_Plugins - Fatal编程技术网

Php 在自定义WordPress插件激活后,更改具有特定域电子邮件地址的所有用户的角色

Php 在自定义WordPress插件激活后,更改具有特定域电子邮件地址的所有用户的角色,php,wordpress,plugins,Php,Wordpress,Plugins,当我的插件被激活时,我想将具有特定域名(@example.com)的所有用户的角色更改为自定义角色 我找到了一些代码,当用户注册并试图使其适应我的需要时,我可以这样做,但它似乎不起作用。当我激活插件时,不会发生任何事情。角色不会改变,我也不会出现任何错误,所以我不太确定我做错了什么 我仍在学习PHP,如果这不合理,请原谅我 这是我的密码: function set_role_by_email( $user_id ){ $user = get_user_by( 'id', $user_id );

当我的插件被激活时,我想将具有特定域名(@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' );

您可以尝试此代码,看看它是否有效:

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');

确保将此代码放在主插件文件中。

首先要检查的是:此挂钩是否实际运行?在里面放一些回音,看看注册后是否打印出来<代码>文件应该指向好主意!我添加了回声,它被拾取,所以至少我知道钩子现在正在运行。但似乎还是不能让它正常工作。工作起来很有魅力。非常感谢。