我有一个前端表单,我在使用init钩子的插件中使用了一个POST处理程序。基本上是:
<form action="" method="POST" id="mktinto-form" class="profile-form">
<!-- form fields here -->
<input type="hidden" name="action" value="profile-form">
<input type="submit" value="Submit">
</form>
和处理程序:
function vv_process_profile_forms() {
if ( isset( $_POST[\'action\'] ) && $_POST[\'action\'] == \'profile-form\' ) {
// form processing code here
$redirect_page = get_permalink( 586 );
wp_redirect( $redirect_page ); exit;
}
}
add_action( \'init\',\'vv_process_profile_forms\' );
表单将被提交,页面将重定向到流程中的下一页。
表单发布良好,发生重定向,但表单处理程序实际上运行了两次。如果我删除重定向,它只运行一次,就像它应该运行的那样,但是,当然,它不会移动到下一页。所以,似乎双重张贴是重定向的结果,但我不知道为什么。
最合适的回答,由SO网友:Jeff Pedigo 整理而成
我想早点回答这个问题。原来问题是开发人员错误(我!)。我使用了一个javascript表单处理程序来处理数据并将其传递给php表单处理程序。原来我实际上是在加载。js文件在页面上显示两次。因为浪费了一天的大部分时间才弄明白这一点,我狠狠地踢了自己一脚。
实际上,我已经通过在javascript中解除表单提交事件的绑定来修复了它,但后来我找到了根本原因,不再需要这样做了。