Попытка зарегистрировать пользователей с помощью wp_signon () - PullRequest
0 голосов
/ 28 мая 2020

Я делаю совершенно новую форму входа в 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");
                }
            }
        }
    }
}

1 Ответ

0 голосов
/ 28 мая 2020

Этот код находится в индексе. php?

Согласно документации https://developer.wordpress.org/reference/functions/wp_signon/ вы должны использовать wp_signon в функции. php.

Вы можете также используйте плагин https://wordpress.org/plugins/custom-login/#developers или вдохновленный им

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...