您只能使用wp_redirect
<在将内容发送到浏览器之前。如果要启用php调试,您会看到“headers ready sent”错误,原因是get_header()
在第一行。
不必在模板中处理表单,您可以hook an earlier action, 喜欢wp_loaded
, 如果要重定向,请将一些查询保存到db。
EDIT, 示例-
add_action( \'wp_loaded\', \'wpa76991_process_form\' );
function wpa76991_process_form(){
if( isset( $_POST[\'my_form_widget\'] ) ):
// process form, and then
wp_redirect( get_permalink( $pid ) );
exit();
endif;
}
使用操作,可以将代码与模板隔离开来。将其与一个短代码结合起来,输出表单并将其全部封装在一个类中,以保存处理/输出之间的状态,您可以在不接触前端模板的情况下完成这一切。