向管理员添加其他角色

时间:2016-04-19 作者:Mike

用户19是WP管理员。

$user = new WP_user( 19 );
$user->add_role( \'custom_role\' );
上述代码起作用并添加custom_role 角色

但是,当我在personal_options_updateedit_user_profile_update 钩住它不。

我在用户配置文件页面中添加了一个复选框。从上述两个挂钩调用的函数,然后。。。

if( user_can( $user_id, \'administrator\' ) ) {
    $user = get_user_by( \'id\', $user_id );      
    if( ! empty( $_POST[\'my_checkbox\'] ) )  {

        update_user_meta( $user_id, \'my_checkbox\', true );
        $user->add_cap( \'one_cap\' );
        $user->add_cap( \'two_cap\' );
        $user->add_role( \'custom_role\' );

    }
}
one_captwo_cap 都已为用户正确设置,但没有custom_role 没有写入调试日志。

这可能是什么原因?

1 个回复
最合适的回答,由SO网友:Nabeel Khan 整理而成

使用profile\\u update挂钩,并在挂钩函数中运行此检查,以确保在更新时也将以前的数据添加到用户概要文件中。

if ( $update ){
        do_action(\'profile_update\', $user_id, $old_user_data);
}else{
        do_action(\'user_register\', $user_id);
}
return $user_id;
这个答案可以帮助您更好地理解它:WordPress edit_user_profile_update update secondary role

相关推荐

未定义的偏移量:1067行的>[...]/wp-includes/capabilities.php中的0

嘿,我在我的localhost设置中得到了这个错误消息,但只有在启用Genesis框架的情况下;WordPress二十一行。当我想创建一个新帖子时,就会发生这种情况。如果我刷新页面,错误会重复,但帖子本身会被创建,一切似乎都很好。有人知道这是什么原因吗?Notice: Undefined offset: 0 in /var/www/secret/htdocs/wp-includes/capabilities.php on line 1067 Notice: Undefined offset: 0