Я делаю совершенно новую форму входа в Wordpress. Я могу регистрировать пользователей, но wp_signon вообще не работает. Пользователи хорошо зарегистрированы, потому что я могу регистрировать их на classi c / wp-admin, но не на моем пользовательском. У меня такая ошибка:
WP_Error Object ([errors] => Array ([empty_password] => Array ([0] => Erreur: le champ du mot de pas est vide.) ) [error_data] => Array ())
Где «Erreur: le champ du mot de paste vide.» означает «Ошибка: поле пароля пусто».
Вот мой код:
<?php
/*
Template Name : Connexion
*/
$error = false;
if(!empty($_POST)) {
$userlog = array(
'user_login' => $_POST['user_login'],
'user_pass' => $_POST['user_password'],
);
$user = wp_signon($userlog);
do_action('init', $user);
if(is_wp_error($user)){
$user->get_error_message();
print_r($user);
}else{
header("Location: /");
};
}
get_header();?>
<div class="main_container">
<div class="container_form">
<h2>Se connecter</h2>
<div class="form_logo">
</div>
<?php if($error) {?>
<div class="error">
<?php echo $error ?>
</div>
<?php } ?>
<form action="<?php echo $_SERVER['REQUEST_URI'];?>" method="POST">
<label for="user_login">Identifiant</label>
<input type="text" name="user_login" id="user_login">
<label for="user_password">Mot de passe</label>
<input type="password" name="user_password" id="user_password">
<div id="button_container">
<input type="submit" name="button1" value="Se connecter" id='save'/>
</div>
</form>
</div>
</div>
<?php get_footer(); ?>
Я пробовал вызывать его при инициализации, без инициализации ... Много всего! Спасибо, если вы можете помочь.
EDIT
Ошибка возникла из-за user_pass, это должно быть user_password для wp_signon и user_pass для wp_insert_user
Здесь это страница регистрации, на которой пользователь зарегистрирован, но не авторизован.
$error = false;
if(!empty($_POST)) {
if($_POST['user_password'] != $_POST['user_password2']) {
$error = "Les mots de passe ne correspondent pas";
} else {
if(!is_email($_POST['user_email'])) {
$error = "Veuillez entrer un email valide";
} else {
$user = array(
'user_login' => $_POST['user_login'],
'user_pass' => $_POST['user_password'],
'user_email' => $_POST['user_email'],
);
$user_add = wp_insert_user($user);
if (is_wp_error($user_add)) {
$error = $user_add->get_error_message();
} else {
update_field('player_league_of_legends', $_POST['user_login'], 'user_'.$user_add);
$user_login = wp_signon($user);
do_action('template_redirect', $user_login);
if(is_wp_error($user_login)){
$error = $user_login->get_error_message();
} else {
header("Location: /login");
}
}
}
}
}