我实际上想创建一个简单的函数,但它似乎不起作用。
我希望当一个用户登录到他的帐户在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' );
}
}
谢谢你的帮助!
您应该使用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 );
参:
- http://codex.wordpress.org/Function_Reference/wp_update_user
- http://codex.wordpress.org/Function_Reference/add_role