Wordpress перенаправить на страницу профиля после регистрации пользователя - PullRequest
0 голосов
/ 03 июля 2018

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

Пользователь зарегистрирован правильно, но перенаправление не происходит.

Кажется, что весь код работает правильно, выводя правильные сообщения об ошибках, когда есть что-то, что не проверяет, а также регистрируя пользователя, если информация верна. Единственная проблема - перенаправление.

Это ошибка, которую я сейчас получаю: Обратите внимание: wpdb :: escape устарела с версии 3.6.0! Используйте взамен wpdb :: prepare () или esc_sql (). Мой PHP:

<?php
        $success = '';
        $error = '';
        global $wpdb, $PasswordHash, $current_user, $user_ID;

        if(isset($_POST['task']) && $_POST['task'] == 'register' ) {
            $password1 = $wpdb->escape(trim($_POST['password1']));
            $password2 = $wpdb->escape(trim($_POST['password2']));
            $first_name = $wpdb->escape(trim($_POST['first_name']));
            $last_name = $wpdb->escape(trim($_POST['last_name']));
            $email = $wpdb->escape(trim($_POST['email']));
            $username = $wpdb->escape(trim($_POST['email']));

            if( $email == "" || $password1 == "" || $password2 == "" || $first_name == "" || $last_name == "") {
                $error = 'Please don\'t leave the required fields.';
            } else if(!filter_var($email, FILTER_VALIDATE_EMAIL)) {
                $error = 'Invalid email address.';
            } else if(email_exists($email) ) {
                $error = 'Email already exists.';
            } else if($password1 <> $password2 ){
                $error = 'Password do not match.';      
            } else {
                $user_id = wp_insert_user( array ('first_name' => apply_filters('pre_user_first_name', $first_name), 'last_name' => apply_filters('pre_user_last_name', $last_name), 'user_pass' => apply_filters('pre_user_user_pass', $password1), 'user_login' => apply_filters('pre_user_user_login', $username), 'user_email' => apply_filters('pre_user_user_email', $email), 'role' => 'young-person') );
                if( is_wp_error($user_id) ) {
                    $error = 'Error on user creation.';
                } else {
                    do_action('user_register', $user_id); 
                    wp_redirect ( home_url("/profile") );
                }
            }
        } ?>

А мой HTML-код:

<form method="post">
            <div class="row">
                <div class="six">
                    <p><label>First Name</label>
                    <input type="text" value="" name="first_name" id="first_name" /></p>
                </div>
                <div class="six">
                    <p><label>Last Name</label>
                    <input type="text" value="" name="last_name" id="last_name" /></p>
                </div>
                <div class="six">
                    <p><label>Email</label>
                    <input type="text" value="" name="email" id="email" required /></p>
                </div>
                <div class="six">
                    <p><label>Password</label>
                    <input type="password" value="" name="password1" id="password1" /></p>
                </div>
                <div class="six">
                    <p><label>Repeat password</label>
                    <input type="password" value="" name="password2" id="password2" /></p>
                </div>
               <div class="full">
                   <div class="alignleft"><?php if($error!= "") { echo $error; } ?></div>


                    <button type="submit" name="btnregister" class="button" >Submit</button>
                    <input type="hidden" name="task" value="register" />
                </div>
            </div>  
        </form>

Любая помощь будет высоко ценится.

1 Ответ

0 голосов
/ 03 июля 2018

Вы отключили отчеты об ошибках? Я подозреваю, что вы выводите что-то перед перенаправлением, вызывая подавление PHP Warning: Cannot modify header information (т.е. не показано), возможно, вы захотите проверить свои журналы.

(Не так) Короче говоря: проверьте, печатаете ли вы, эхо и т. Д., Что-нибудь до перенаправления. Это приведет к сбою перенаправления.

Дополнительные примечания:

  1. Вы можете добавить die('test') между вызовами к do_action() и wp_direct(), просто чтобы проверить, действительно ли достигнута эта точка - я подозреваю, что это так.
  2. Вы также хотите добавить exit после перенаправления. Проверьте ТАК вопрос почему. А также документация WordPress на wp_redirect():

    Примечание: wp_redirect () не завершается автоматически, и должен почти всегда следует звонок для выхода;.

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