我实际上想要创建一个简单的功能,但它似乎不起作用
我希望当用户在Wordpress上登录他的帐户以在某些情况下更改他的角色(订阅者 - > directory_1)时(在这种情况下很容易进行测试,它应该每次更改,但仍然无法正常工作)。
这是我的代码:
add_action('wp_login', 'update_roles');
function update_roles()
{
global $wpdb;
$author = wp_get_current_user();
if(current_user_can('subscriber'))
{
$author->remove_role( 'subscriber' );
$author->add_role( 'directory_1' );
}
}
感谢您的帮助!
答案 0 :(得分:0)
您应该使用wp_update_user()
来更新用户的角色。使用add_role()
添加角色后,您可以执行以下操作:
function custom_update_roles( $user_login, $user ) {
if ( ! empty( $user->roles ) && is_array( $user->roles ) ) {
if ( in_array( "subscriber", $user->roles ) ) {
$user_id = wp_update_user( array( 'ID' => $user->ID, 'role' => 'directory_1' ) );
if ( is_wp_error( $user_id ) ) {
// Error.
} else {
// Success.
}
} else {
// This user is not a subscriber.
}
}
}
add_action( 'wp_login', 'custom_update_roles', 10, 2 );
参考: