如何在表单提交后正确地在WordPress中进行URL重定向?

时间:2015-03-24 12:34:03

标签: php wordpress redirect

如何在WordPress中提交表单后正确重定向?我真的在这个地方寻找过它,但还没有找到答案。我认为对这个问题的一个很好的解释可能会使许多人受益。

在我的情况下,我有一个提交给自己的表单,如果表单验证,则保存数据并重定向用户。如果失败,用户应该看到错误或被重定向,具体取决于错误的性质。

经过研究,最正确的方法似乎是使用函数wp_redirect(),但我无法使其工作。我知道为什么,因为标题已经被发送出去(意思是,浏览器已经开始输出并且无法重定向)。我得到那个部分。但是,我该如何正确使用此功能?我无法绕过这一个。

我尝试使用旧的header(Location: http://www.example.com/);响应。也没有运气。

有人可以详细说明吗?感谢。

1 个答案:

答案 0 :(得分:1)

您有两种选择:

  • your own plugin,然后进行验证,如果没有错误则从那里重定向,或者如果有错误则设置错误
  • 将其写在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;
}