简体   繁体   English

单击提交按钮时,找不到自定义的wordpress注册页面重定向到404页面

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

am creating my custom wordpress theme register page , but some reason i don't understand when i click on submit when the fields are filled it will redirect me to my 404 , but when i click on it when i have not filled any field , it will sent me the message error. 正在创建我的自定义wordpress主题注册页面,但是由于某些原因我不明白,当我在字段填充时单击“提交”时,它将重定向到我的404,但是当我在未填写任何字段时单击它时,它将将向我发送消息错误。 Here is my code 这是我的代码

 <?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>

sorry my code :) is abit long 对不起,我的代码:)有点长

Not an expert and new to stackoverflow, but I wonder why you use do_action and a function at this point in your code: 虽然不是专家并且不是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 );
                }

            }

Perhaps change it to: 也许将其更改为:

                $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';

The function you create only passes $user_id and not the other variables like $phone, etc. No point using a function here :) 您创建的函数只传递$ user_id,而不传递$ phone等其他变量。这里没有使用函数的意义:)

对于可能有相同问题的人,这里是解决方案,变量名$ name和$ user_name发生冲突,并导致redirect,我只是将其更改了,所以一切正常。

表单操作必须为$ _SERVER ['REQUEST_URI'],然后您将在同一页面上获得发布数据。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM