表单提交恢复为index.php模板

时间:2019-08-24 作者:Divya M.P.

我已经创建了一个联系我们的表单,提交后会发送一封电子邮件。当电子邮件成功触发时,提交将导致一个包含我的索引的页面。php模板,URL没有任何更改。这可能与模板层次结构有关,但我已经尝试了前面提到的所有其他方法,但都不起作用。这是我在表单中的“联系我们”页面的代码。

<?php /* Template Name: Contact Us */ ?> 
<?php get_header(); ?> 
<?php
  $name = $_POST[\'name\']; 
  $from = $_POST[\'email\']; 
  $message = $_POST[\'message\']; 
  $subject = "Message for Aria Event Planners from \'$name\' "; 
  $to = "[email protected]"; 
  $headers = "MIME-Version : 1.0" . "\\r\\n"; 
  $headerx .= "Content-type:text/html;charset=UTF-8" . "\\r\\n"; 
  $headers = "From: <$from> \\r\\n"; 
?> 
<div class="container">
  <div class="header for-text-layout">Contact Us </div>
  <div class="for-text-layout p-3">
    <div></div>
    <form method="POST">
      <p>
        <label>Name</label>
        <input type="text" name="name" placeholder="Your Name" class="input" id="name" required>
      </p>
      <p>
        <label>E-Mail Address  </label>
        <input type="email" name="email" placeholder="Your E-Mail" class="input" required>
      </p>
      <p class="message">
        <label>Message  </label>
        <textarea rows="3" cols="30" class="input" name="message" placeholder="Your Message Here" required></textarea>
      </p>
      <p class="submit">
        <button type="submit" name="submit" id="submit">Send Message</button>
      </p>
      <div>
        <?php
          if(isset($_POST[\'submit\'])){          
            if(mail($to, $subject, $message, $headers)){
              get_site_url(\'/email-success/\');          
            } else {
              get_site_url(\'/email-failure/\');          
            }       
          }             
        ?>      
      </div>
      <div></div>   
    </form> 
  </div> 
</div>
<?php get_footer(); ?>

1 个回复
SO网友:Antti Koskinen

我用你的代码在本地做了一些测试。我认为问题在于表单输入名称与WP保留的名称冲突。还应在之前重定向到成功/错误页面get_header() 避免任何发送的标头错误。

因此,在输入名称中添加一些前缀/后缀,如下所示

<input type="text" name="my-name" placeholder="Your Name" class="input" id="name" required>
并将提交例程上移,

if(isset($_POST[\'my-submit\'])){
    if(mail($to, $subject, $message, $headers)){
      wp_redirect( home_url( \'/email-success/\' ) );
      exit;
    } else {
      wp_redirect( home_url( \'/email-failure/\' ) );
      exit;
    }
  }

get_header(); ?>
<!-- form html -->