WordPress как на ладони
Очень Удобный и Быстрый Хостинг для сайтов на WordPress. Пользуюсь сам и вам рекомендую!

Автологин после регистрации

Прошу помощи с настройкой автологина и редиректом пользователя на разные страницы после регистрации.

  1. Для регистрации "закидываю" массив $userdata_for_registration через wp_insert_user().
  2. В зависимости от того, пустые переменные $maraphon_next_month или $maraphon_after_month хочу перенаправлять пользователя на разные страницы через wp_redirect, при этом пользователь должен автоматически залогинится в обоих случаях
  3. В functions.php создал 2 action с разными адресами для редиректа после регистрации.

Не работает... срабатывает только первое условие и первый action - всегда ведет на ../lk

Куки чистил, браузеры менял, переменные проверял

function complete_registration() {
	global $wpdb, $reg_errors, $password, $email, $telephone, $first_name, $maraphon_next_month, $maraphon_after_month;
	if ( count($reg_errors->get_error_messages()) < 1 ) {
		$userdata_for_registration = array(
		'user_login'    =>  $email,
		'user_email'    =>  $email,
		'user_pass'     =>  $password,
		'telephone'     =>  $telephone,
		'first_name'    =>  $first_name,
		);

	$user = wp_insert_user( $userdata_for_registration ); 

			//переадресация после регистрации с учетом выбранных услуг
			if( !empty($maraphon_next_month) || !empty($maraphon_after_month)) {
				do_action( 'user_register', 'auto_login_new_user' );
			} else {
				do_action( 'hello_user_register', 'hello_auto_login_new_user' );
			};

	}
}

Если переписать условие вот так, то все редиректится прекрасно (без автологина естественно).

//переадресация после регистрации с учетом выбранных услуг
			if( !empty($maraphon_next_month) || !empty($maraphon_after_month)) {
				header('Location: http://maraphone.ru/lk/');
			} else {
				header('Location: http://maraphone.ru/hello/');
			};

Код из functions.php

function auto_login_new_user( $user_id ) {
		wp_set_current_user($user_id);
		wp_set_auth_cookie($user_id); 
		wp_redirect( 'http://maraphone.ru/lk' );
		exit;
	}
 add_action( 'user_register', 'auto_login_new_user' );

 function hello_auto_login_new_user( $user_id ) {
		wp_set_current_user($user_id);
		wp_set_auth_cookie($user_id); 
		wp_redirect( 'http://maraphone.ru/hello' );
		exit;
	}
 add_action( 'hello_user_register', 'hello_auto_login_new_user' );

Помогите разобраться с этой магией

0
Rickie
3.5 лет назад
  • 0
    if( !empty($maraphon_next_month) || !empty($maraphon_after_month))

    Ну так если тебе понятно где проблема, то и переделай тут, что бы проверить посмотри как работают эти проверки.

    Разберись почему у тебя там всегда пусто.

    А еще наверное нада это:

    do_action( 'user_register', 'auto_login_new_user', $user ); //$user наверное $user_id и есть?
    
    ....
    
    add_action( 'hello_user_register', 'hello_auto_login_new_user', 10, 1 );

    А так пробывал?

    wp_set_current_user($user_id);
    wp_set_auth_cookie($user_id); 
    header('Location: http://maraphone.ru/lk/');
    Комментировать
На вопросы могут отвечать только зарегистрированные пользователи. Вход . Регистрация