簡體   English   中英

單擊提交按鈕時,找不到自定義的wordpress注冊頁面重定向到404頁面

[英]Custom wordpress Register page redirect to 404 page not found when click on submit button

正在創建我的自定義wordpress主題注冊頁面,但是由於某些原因我不明白,當我在字段填充時單擊“提交”時,它將重定向到我的404,但是當我在未填寫任何字段時單擊它時,它將將向我發送消息錯誤。 這是我的代碼

 <?php
    the_post();
    $err = '';
    $success = '';

    global $wpdb, $PasswordHash, $current_user, $user_ID;

    if('POST' == $_SERVER['REQUEST_METHOD'] && isset( $_POST['action'] ) &&  $_POST['action'] == "submit-a-plate" ) {

        var_dump($_POST);



        $name = $wpdb->escape(trim($_POST['name']));
        $pwd = $wpdb->escape(trim($_POST['password']));
        $name = $wpdb->escape(trim($_POST['name']));
        $username = $wpdb->escape(trim($_POST['user_name']));
        $email = $wpdb->escape(trim($_POST['email']));
        $phone = $wpdb->escape(trim($_POST['phone']));
        $school = $wpdb->escape(trim($_POST['school']));
        $role = $wpdb->escape(trim($_POST['role']));
        $level = $wpdb->escape(trim($_POST['level']));



        if( $name == "" || $pwd == "" || $name == "" || $username == "" || $email == "" || $phone == "" || $school == "" || $role == "" || $phone == "") {
            $err = 'Please don\'t leave fill all the fields.';
        } else if(!filter_var($email, FILTER_VALIDATE_EMAIL)) {
            $err = 'Invalid email address.';

        } else if(email_exists($email) ) {
            $err = 'Email already exist.';
        } else {
            var_dump($email);
            die();


            $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', $pwd1), 'user_login' => apply_filters('pre_user_user_login', $username), 'user_email' => apply_filters('pre_user_user_email', $email), 'role' => 'subscriber' ) );

            if( is_wp_error($user_id) ) {
                $err = 'Error on user creation.';
            } else {
                do_action('user_register', 'add_user_extra_info');

                function add_user_extra_info($user_id){

                    $metas = array( 
                        'phone'   => $phone,
                        'level' => $level, 
                        'role'  => $role ,
                        'name'       => $name ,
                        'school'     => $school
                    );
                    foreach($metas as $key => $value) {
                        update_user_meta( $user_id, $key, $value );
                    }

                }

                $success = 'You\'re successfully register';
            }

        }
    }



?>


enter code here

<form  method="post" > 

                <div class="field">
                  <label class="label">Name</label>
                  <div class="control has-icons-left">
                    <input name="name" class="input has-icons-left" type="text" placeholder="Text input">
                    <span class="icon is-small is-left">
                      <i class="fas fa-user"></i>
                    </span>
                  </div>
                </div>

                <div class="field">
                  <label class="label">Username</label>
                  <div class="control has-icons-left ">
                    <input name="user_name" class="input " type="text" placeholder="Text input" >
                    <span class="icon is-small is-left">
                      <i class="fas fa-user"></i>
                    </span>

                  </div>
                </div>

                <div class="field">
                  <label class="label">Email</label>
                  <div class="control has-icons-left ">
                    <input name="email" class="input " type="email" placeholder="Email input" >
                    <span class="icon is-small is-left">
                      <i class="fas fa-envelope"></i>
                    </span>

                  </div>

                </div>

                <div class="field">
                  <label class="label">Phone</label>
                  <div class="control has-icons-left ">
                    <input name="phone" class="input " type="number" placeholder="" >
                    <span class="icon is-small is-left">
                      <i class="fas fa-mobile-alt"></i>
                    </span>

                  </div>

                </div>
                 <div class="field">
                  <label class="label">School</label>
                  <div class="control has-icons-left ">
                    <input name="school" class="input " type="text" placeholder="" >
                    <span class="icon is-small is-left">
                      <i class="fas fa-mobile-alt"></i>
                    </span>

                  </div>

                </div>



                <div class="field">
                  <label class="label">Password</label>
                  <div class="control has-icons-left ">
                    <input name="password" class="input " type="password" >
                    <span class="icon is-small is-left">
                      <i class="fas fa-lock"></i>
                    </span>

                  </div>

                </div>

                <div class="field">
                  <label class="label">Role</label>
                  <div class="control">
                    <div class="select">
                      <select name="role">
                        <option value="Teacher">Teacher</option>
                        <option value="Student">Students</option>
                        <option value="Book author">Book author</option>
                        <option value="Others">Others</option>
                      </select>
                    </div>
                  </div>
                </div>

                <div class="field">
                  <label class="label">Level</label>
                  <div class="control">
                    <div class="select">
                      <select name="level">
                        <option value="o level">O level </option>
                        <option value="a level">A level</option>

                        <option value="others">Others</option>
                      </select>
                    </div>
                  </div>
                </div>


                <div class="field">
                  <div class="control">
                    <label class="checkbox">
                      <input type="checkbox">
                      I agree to the <a href="#">terms and conditions</a>
                    </label>
                  </div>
                </div>



                <div class="field is-grouped">
                  <div class="control">
                    <input type="submit" name="btnregister" class="input is-medium button submits is-rounded" value="Register" />
                       <input type="hidden" name="action" value="submit-a-plate" />

                  </div>

                </div>

                </form>
              </div>
            </div>

對不起,我的代碼:)有點長

雖然不是專家並且不是stackoverflow的新手,但是我想知道為什么現在在代碼中使用do_action和一個函數:

do_action('user_register', 'add_user_extra_info');

            function add_user_extra_info($user_id){

                $metas = array( 
                    'phone'   => $phone,
                    'level' => $level, 
                    'role'  => $role ,
                    'name'       => $name ,
                    'school'     => $school
                );
                foreach($metas as $key => $value) {
                    update_user_meta( $user_id, $key, $value );
                }

            }

也許將其更改為:

                $metas = array( 
                    'phone'   => $phone,
                    'level' => $level, 
                    'role'  => $role ,
                    'name'       => $name ,
                    'school'     => $school
                );
                foreach($metas as $key => $value) {
                    update_user_meta( $user_id, $key, $value );
                }

           $success = 'You\'re successfully register';

您創建的函數只傳遞$ user_id,而不傳遞$ phone等其他變量。這里沒有使用函數的意義:)

對於可能有相同問題的人,這里是解決方案,變量名$ name和$ user_name發生沖突,並導致redirect,我只是將其更改了,所以一切正常。

表單操作必須為$ _SERVER ['REQUEST_URI'],然后您將在同一頁面上獲得發布數據。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM