好的,我设法使用 Hooks 做到了。我使用下面的代码进行了重定向。请注意,表单操作设置为admin-post.php
<form action="admin-post.php" name="frmHardware" id="frmHardware" method="post">
<!-- form elements -->
<!-- Essential field for hook -->
<input type="hidden" name="action" value="save_hw" />
</form>
然后在我的插件的主文件中,我添加了以下内容:
add_action('admin_init', 'RAGLD_dashboard_hardware_init' ); // action hook add/remove hardware
其中,函数定义如下: 另请注意,第一个参数派生自admin_post
哪个保留字与上action
式中的隐藏字段组合。
function RAGLD_dashboard_hardware_init() {
// checking for form submission when new hardware is added
add_action( 'admin_post_save_hw', 'RAGLD_process_hw_form' );
}
在上面提交表单的评估之后add_action
,将调用函数,RAGLD_process_hw_form
该函数旨在验证表单条目并相应地采取行动/重定向。
function RAGLD_process_hw_form() {
if (form_is_validated) {
wp_redirect( add_query_arg( array('page' => 'ragld/edit-hardware', 'action'=> 'InvalidData'), admin_url() ));
} else {
//do something else
}
}
这是我暂时能想到的解决方案,如果你觉得它们更有效,你可以提出你的答案。