@webga

Как обновить роль пользователя по условию в момент регистрации?

Подскажите пожалуйста дилетанту wordpress как можно реализовать обновление роли пользователя в зависимости от переданных мета данных в момент регистрации.
Написал вот такой код но он не работает.

add_action( 'user_register', 'my_user_registration' );
function my_user_registration( $user_id ) {
	$meta_com = get_user_meta( $user_id, 'user_type', true );
	$value_yes = 'yes';
	$role_yes = 'company';
	$role_no = 'customer';
	if ( $meta_com == $value_yes) {
		wp_update_user( array( 'ID' => $user_id, 'role' => $role_yes ) );
	} else {
		wp_update_user( array( 'ID' => $user_id, 'role' => $role_no ) );
}
}

Суть проблемы: Нужно что бы при регистрации клиенту woocommerce присваивалась роль в зависимости от переданного значения $type_user, данные в базу данных пишутся проверено! Можно реализовать без проверок т.к. поле тип пользователя реализован в виде select и там всегда будет какое то значение.
type_user может принимать значения только yes или no.
Пробовал так же через set_role, remove_role, add_role, ничего не получается.
  • Вопрос задан
  • 123 просмотра
Пригласить эксперта
Ответы на вопрос 2
Gori4ka
@Gori4ka
WordPress Developer
Попробуйте следующим образом:
add_action('user_register', 'my_user_registration');
function my_user_registration($user_id)
{
    $meta_com  = get_user_meta($user_id, 'user_type', true);
    $user      = new WP_User($user_id);
    $value_yes = 'yes';
    $role_yes  = 'company';
    $role_no   = 'customer';
    if ($meta_com == $value_yes) {
        $user->add_role($role_yes);
    } else {
        $user->add_role($role_no);
    }
}
Ответ написан
Комментировать
@webga Автор вопроса
Уже нашел решение!
add_action( 'woocommerce_created_customer', 'my_user_registration' );
function my_user_registration( $user_id ) {

	$meta_com = get_user_meta( $user_id, 'user_type', true );
	$value_yes = 'yes';
	$role_yes = 'company';
	$role_no = 'customer';
	if ( $meta_com == $value_yes) {
		wp_update_user( array( 'ID' => $user_id, 'role' => $role_yes ) );
	} else {
		wp_update_user( array( 'ID' => $user_id, 'role' => $role_no ) );

}
}

add_action('user_register', 'my_user_registration');

Срабатывает раньше чем мета user_type записывается в базу данных в этом и была проблема.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы