我正在开发我的第一个Wordpress插件,该插件具有注册会员的前端表单,但我被重定向到类似于此phantom 302 redirect problem的主页。但是如果我使用管理员帐户提交相同的表单,它会通过并插入数据库,所以我认为问题在于会员帐户。我正在使用Ultimate Member插件进行用户注册。
我已经完成了对该特定问题的公认解决方案无济于事。
以下是 HTML表单的示例,您可以看到我为字段名称添加前缀以确保唯一性:
<form action="http://localhost/mysite/wp-admin/admin-post.php" method="post" class="delivery-form">
<input type="hidden" name="action" value="schedule_delivery">
<h3>Recipient's Information</h3>
<div class="form-group">
<label for="r_first_name">First Name<span class="required">*</span></label>
<input type="text" class="form-control" name="r_first_name" id="r_first_name" placeholder="First Name" required value="Example">
</div>
<div class="form-group">
<label for="r_last_name">Last Name<span class="required">*</span></label>
<input type="text" class="form-control" name="r_last_name" id="r_last_name" placeholder="Last Name" required value="Example">
</div>
<div class="form-group">
<label for="r_address">Street Address<span class="required">*</span></label>
<input type="text" class="form-control" name="r_address" id="r_address" placeholder="Street Address" required value="Example">
</div>
...
<h3>Package Information</h3>
<div class="form-group">
<label for="weight">Weight (kg)<span class="required">*</span></label>
<input type="number" class="form-control" value="0" name="pkg_weight" id="weight" required>
</div>
...
<div class="form-group">
<label for="cost">Cost</label>
<input type="text" class="form-control" value="0" name="pkg_cost" id="cost" readonly>
</div>
<button type="submit" class="btn btn-default">Submit</button>
</form>
这里是数据库对象声明并将插入函数添加到钩子中:
if( class_exists( 'DBClass' ) ) {
$db = DBClass::getInstance();
}
add_action( 'admin_post_schedule_delivery', array( $db , 'insert_schedule_request' ) );
我还尝试了&#39; admin_post_nopriv&#39; ,但管理员和会员都无法提交。
最后,插入功能:
function insert_schedule_request() {
global $wpdb;
$wpdb->insert( $this->get_table_name(), array(
'user_id' => get_current_user_id(),
'schedule_date' => current_time('mysql'),
'r_first_name' => $_POST['r_first_name'],
'r_last_name' => $_POST['r_last_name'],
'r_address' => $_POST['r_address'],
...
'pkg_weight' => $_POST['pkg_weight'],
...
'pkg_cost' => $_POST['pkg_cost']
), array(
'%d',
'%s',
'%s',
'%s',
'%s',
...
'%f',
...
'%f'
));
wp_redirect( home_url( 'success-page' ) );
}
我试着整天都在寻找解决方案,但我的搜索问题却用尽了。感谢所有的帮助。 TIA。