【问题标题】:WordPress: form redirect after submitWordPress:提交后表单重定向
【发布时间】:2014-08-25 13:08:52
【问题描述】:

如何在 WordPress 中使用 PHP 提交自定义表单后实现重定向?

<?php
if(isset($_POST['send'])) {     
  $email = trim($_POST['email']);
  if(empty($email)) {
    echo '<div class="error">Please enter your email.</div>';
  } else {
    if(!filter_var($email, FILTER_VALIDATE_EMAIL)) {
      echo '<div class="error">Email is not valid.</div>';
    } else {        
      //redirect
      ?><script>window.location = "<?php echo home_url('/thank-you/');?>"</script><?php
    }
  }
}
?>
<form method="post" role="form">
  <div class="form-group">
    <label for="email">Email</label>
    <input type="text" class="form-control" id="email" name="email" value="<?php  if(!empty($email)) echo $email; ?>" placeholder="Enter your email..." />
  </div>
  <button type="submit" name="send" class="btn btn-default">Send</button>
</form>

这是一个自定义表单的简单实现,我想在提交后重定向到另一个站点。它已经适用于 javascript,但也许存在更好的方法来用 PHP 实现这个重定向?

任何帮助将不胜感激。谢谢!

【问题讨论】:

    标签: php wordpress forms redirect


    【解决方案1】:

    试试这个

    <?php wp_redirect( home_url('/thank-you/') ); exit; ?>
    

    【讨论】:

    • 我之前试过这个,但是这个表格包含在我的首页的内容部分,所以标题已经发送了
    • 你不知道吗? :(
    • 您的表单在哪里都没有关系,只需将您的 PHP 逻辑复制到页面顶部即可。如果您的条件匹配,则您的代码将起作用并相应地重定向。将 PHP 逻辑放在表单的上方或下方并不是强制性的。
    • 所以我必须为每个重定向修改wordpress header.php,因为所有表单都会包含在网站的内容中?
    • 那么你的每一页都有表格吗?
    【解决方案2】:

    你也可以考虑这两种解决方案

    在functions.php中为java脚本重定向创建一个函数并在你想要的时候调用的第一个解决方案

    function redirect($url){
        $string = '<script type="text/javascript">';
        $string .= 'window.location = "' . $url . '"';
        $string .= '</script>';
        echo $string;
    }
    

    第二个解决方案是让你的 wordpress index.php 看起来像这样

    ob_start();
    /*content of your index.php here*/
    ob_flush();
    

    【讨论】:

    • 谢谢我已经创建了重定向功能,但是是什么导致了您的第二个解决方案? :)
    • 输出缓冲应该在任何发送/回显到浏览器之前开始。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-04-13
    • 1970-01-01
    • 2011-05-29
    相关资源
    最近更新 更多