#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 по умолчанию делает это