如何在WordPress中提交表单后正确重定向?我真的在这个地方寻找过它,但还没有找到答案。我认为对这个问题的一个很好的解释可能会使许多人受益。
在我的情况下,我有一个提交给自己的表单,如果表单验证,则保存数据并重定向用户。如果失败,用户应该看到错误或被重定向,具体取决于错误的性质。
经过研究,最正确的方法似乎是使用函数wp_redirect()
,但我无法使其工作。我知道为什么,因为标题已经被发送出去(意思是,浏览器已经开始输出并且无法重定向)。我得到那个部分。但是,我该如何正确使用此功能?我无法绕过这一个。
我尝试使用旧的header(Location: http://www.example.com/);
响应。也没有运气。
有人可以详细说明吗?感谢。
答案 0 :(得分:1)
您有两种选择:
functions.php
中并在init
状态下执行。要编写自己的插件,有点复杂,但如果你可以编程的话也不会那么难。
如果您不想这样做,则需要在functions.php
中执行此类操作(此functions.php
位于您的主题目录中。如果没有这样的文件,只需创建之一。
init
上的操作总是在加载所有重要的wordpress文件时发生,但缓冲区中没有输出,所以你可以在这里使用header();
或wp_redirect();
。
add_action('init', 'myInit');
function myInit() {
if (isset($_POST["mysubmit"])) {
$errors = myFormValidation();
if (empty($errors)) {
//Do whatever you want here
header("Location: yoururl.php");
die();
}
//Set the errors here
}
}
function myFormValidation() {
$errors = array();
//do your validation here. check wordress documentation how to do this.
return $errors;
}