【问题标题】:How to properly URL redirect in WordPress after form submission?表单提交后如何在 WordPress 中正确重定向 URL?
【发布时间】:2015-03-24 12:34:03
【问题描述】:

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

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

经过研究,最合适的方法似乎是使用函数wp_redirect(),但我无法让它工作。我知道为什么,因为标头已经发出(意思是,浏览器已经开始输出并且无法重定向)。我得到了那部分。但是,我该如何正确使用这个功能呢?我无法理解这个。

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

谁能详细说明一下?谢谢。

【问题讨论】:

  • 也许你的意思是标题 response,而不是 request
  • 也许可以尝试使用js。类似这个函数 redirect() { window.location.href = "stackoverflow.com" } 然后调用这个函数
  • 牙刷是的,回复。 @yuyokk,是的,这可以用 JS 完成,但是,应该有一种方法可以用 WP 核心功能来做到这一点。我确信这不是火箭科学,我只是还没弄清楚。不过还是谢谢。

标签: php wordpress redirect


【解决方案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;
}

【讨论】:

  • 甜蜜的@lolka_bolka!谢谢!今天我得试一试。是的,我正在编写自己的插件——我只是遇到了 URL 重定向问题。我认为我的问题是当在 WP 中加载东西时我会感到困惑。所以我应该在init 钩子中处理我所有的表单提交以处理 URL 重定向,以备不时之需?这是正确的方法吗?
  • 好的,效果很好!你是男人!从现在开始,我完全明白如何实现这一点了,超级简单!提醒那些遇到此问题的人,请将您的 function myInit() 放在您的 function.php 或插件文件中 - 如果您将其放在模板文件中,它将不起作用。
  • 对于那些再次遇到相同问题的人,您可能需要考虑像 add_action('template_redirect', 'myInit'); 这样挂钩此操作,以便您可以使用条件标签。 IE。 is_page('login')
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-07-08
  • 1970-01-01
  • 2014-06-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多