代码的问题很简单。执行重定向后,不会终止脚本执行。因此,将设置标题,但浏览器将忽略它。
如果你看看WP Code Reference, 明确规定:
注意:wp\\u redirect()不会自动退出,并且应该总是在调用退出后进行;
因此,您所要做的就是更改代码,如下所示:
function ab_process_application_form()
{
if (isset($_POST[\'new_application\']) && isset($_POST[\'ab_application_nonce\'])) {
if (wp_verify_nonce($_POST[\'ab_application_nonce\'], \'ab_application_form_nonce\')) {
// all $_POST and validation code
...
// add record to database
$insert_id = $db->insert($data, $format);
// trigger action after form submit
do_action(\'ab_application_submitted\', $insert_id, $firstname, $lastname, $post_campaign);
// redirect after form submitted
wp_redirect(home_url(\'/application/thank-you\'));
exit; // <-- this is the only change you need to do
} else {
echo \'Not Verified\';
} // end nonce verification
} // end check
} // end of function
// submit record on init hook
add_action(\'init\', \'ab_process_application_form\');
附:几乎总是最好在重定向到的URL中添加尾部斜杠。否则,WP将再次执行重定向以添加此斜杠。
PPS。还有,如果你用admin_post
钩子代替init
处理POST请求。