Как мне зарегистрировать пользователя и войти в систему в рамках одной и той же функции php?

#php #wordpress

Вопрос:

Я использую пользовательскую функцию wordpress для регистрации пользователя, но я также хотел бы, чтобы они вошли в систему после регистрации. Приведенное ниже только регистрирует пользователя. Затем вам нужно будет войти в систему отдельно. Это потому, что пользователь на самом деле не зарегистрирован к тому времени, когда я пытаюсь войти в систему?

 function register_user_form() {
    $user_login = $_POST['currentUserName'];
    $user_email = $_POST['currentUserEmail'];
    $user_pass = $_POST['currentUserPassword'];

    $userdata = compact( 'user_login', 'user_email', 'user_pass' );
    $user = wp_insert_user($userdata);
    $creds = array('user_login' => $user_login, 'user_password' => $user_pass, 'remember' => true);
    $user = wp_signon($creds);

}
add_action('wp_ajax_register_user_form', 'register_user_form');
add_action('wp_ajax_nopriv_register_user_form', 'register_user_form');
 

Комментарии:

1. Вы имеете в виду «войти» вместо «зарегистрироваться» в названии?

2. правильно! только что сменил название — спасибо

3. Видя, что это делается с помощью AJAX, вы перезагружаете страницу после завершения вызова AJAX? В противном случае я не думаю, что это сработает как есть, потому что я считаю, что файл cookie, который создается при входе в систему, будет недоступен до следующей загрузки страницы.

4. Вы также можете проверить, была ли попытка входа успешной или нет, выполнив что-то вроде error_log(print_r($user, true)); (сначала убедитесь, что вы включили отладку , чтобы увидеть вывод в отладке. файл журнала.)

5. так я и думал — сначала мне нужно зарегистрировать пользователя (затем перезагрузить страницу), а затем запустить функцию входа в систему. но уверен, что есть способ объединить их? думаю, что реестр wordpress по умолчанию делает это