[英]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.