2017-10-16 42 views
0

你好家伙我正在尝试使自定义联系表单,我有一些问题。 我在我的主题文件中制作了page-contact-us.php,并在CMS中创建了联系我们页面。 这是代码:在front-page.php中导入联系表格

<?php 
//response generation function 

$response = ""; 

//function to generate response 
function my_contact_form_generate_response($type, $message) { 

    global $response; 

    if ($type == "success") 
     $response = "<div class='success'>{$message}</div>"; 
    else 
     $response = "<div class='error'>{$message}</div>"; 
} 

//response messages 
$not_human = "Human verification incorrect."; 
$missing_content = "Please supply all information."; 
$email_invalid = "Email Address Invalid."; 
$message_unsent = "Message was not sent. Try Again."; 
$message_sent = "Thanks! Your message has been sent."; 

//user posted variables 
$name = $_POST['message_name']; 
$email = $_POST['message_email']; 
$message = $_POST['message_text']; 
$human = $_POST['message_human']; 

//php mailer variables 
$to = get_option('admin_email'); 
$subject = "Someone sent a message from " . get_bloginfo('name'); 
$headers = 'From: ' . $email . "\r\n" . 
     'Reply-To: ' . $email . "\r\n"; 

if (!$human == 0) { 
    if ($human != 2) 
     my_contact_form_generate_response("error", $not_human); //not human! 
    else { 

     //validate email 
     if (!filter_var($email, FILTER_VALIDATE_EMAIL)) 
      my_contact_form_generate_response("error", $email_invalid); 
     else { //email is valid 
      //validate presence of name and message 
      if (empty($name) || empty($message)) { 
       my_contact_form_generate_response("error", $missing_content); 
      } else { //ready to go! 
       $sent = wp_mail($to, $subject, strip_tags($message), $headers); 
       if ($sent) 
        my_contact_form_generate_response("success", $message_sent); //message sent! 
       else 
        my_contact_form_generate_response("error", $message_unsent); //message wasn't sent 
      } 
     } 
    } 
} 
else if ($_POST['submitted']) 
    my_contact_form_generate_response("error", $missing_content); 
?> 



<div id="respond"> 
    <?php echo $response; ?> 
    <form action="<?php the_permalink(); ?>" method="post"> 
     <div class="inputs-style"> 
      <input type="text" id="name" name="message_name" required value="<?php echo esc_attr($_POST['message_name']); ?>"> 
      <span class="floating-label">YOUR NAME</span> 
     </div> 

     <div class="inputs-style"> 
      <input type="text" id="email" name="message_email" required value="<?php echo esc_attr($_POST['message_email']); ?>"> 
      <span class="floating-label">YOUR E-MAIL</span> 
     </div> 

     <div class="inputs-style"> 
      <textarea class="autoExpand" type="text" data-min-rows='' rows="1" required name="message_text"><?php echo esc_textarea($_POST['message_text']); ?></textarea> 
      <span class="floating-label">YOUR MESSAGE</span> 
     </div> 

     <!-- <p> 
     <label for="name">Name: <span>*</span> <br> 
      <input type="text" name="message_name" value="<?php echo esc_attr($_POST['message_name']); ?>"> 
     </label> 
     </p> 

     <p> 
     <label for="message_email">Email: <span>*</span> <br> 
      <input type="text" name="message_email" value="<?php echo esc_attr($_POST['message_email']); ?>"> 
     </label> 
     </p> 

     <p> 
     <label for="message_text">Message: <span>*</span> <br> 
      <textarea type="text" name="message_text"> 
     <?php echo esc_textarea($_POST['message_text']); ?> 
      </textarea> 
     </label> 
     </p> --> 

     <p> 
      <label for="message_human">Human Verification: <span>*</span> <br> 
       <input type="text" style="width: 60px;" name="message_human"> + 3 = 5 
      </label> 
     </p> 
     <input type="hidden" name="submitted" value="1"> 

     <input class="btn btn-imperium btn-2" type="submit"> 
    </form> 
</div> 

现在,当我直接用它作为页它运作良好,但是当我尝试导入到我的front-page.php这样<?php include('page-contact-us.php'); ?>这是行不通的。

有谁知道如何让它在我的front-page.php中工作?

+2

解释“它不起作用”,它给你什么错误? – NoImaginationGuy

+0

@NoImaginationGuy对不起,没有提供更多的细节,但事情是我没有得到任何错误。当我使用联系我们页面时,表单可以工作,但是当在front-page.php中导入时,它不会,但它会将我重定向到我的自定义信息类型中的某个帖子。说实话没有意义。 – Zvezdas1989

+0

代码格式化,页面名称高亮 –

回答

0

您确定提供了模板的正确地址吗?它应该是这样的,

<?php include(get_template_directory_uri().'/page-contact-us.php'); ?> 

为了确保它包括你可能想要将include()函数改为require()。

+0

地址是好的。 HTML部分可以在页面上清楚地看到。当我试图包含上面的代码时,我得到这个'Warning:include():http:// wrapper在服务器配置中被allow_url_include = 0在C:\ wamp \ www \ imperum \ wp-content \ themes \在331行上的'imperum \ front-page.php'和'Warning:include(http://localhost/imperum/wp-content/themes/imperum/page-contact-us.php):未能打开流:不适合可以在第331行的C:\ wamp \ www \ imperum \ wp-content \ themes \ imperum \ front-page.php中找到封装器。 – Zvezdas1989

+0

您需要转到WAMP中的php.ini文件并将'allow_url_include = 0 'to'allow_url_include = 1' –

+0

我可以试试,但我已经直接在服务器上试过了你的代码,没有运气。当我在服务器上使用你的代码时,什么都不会发生没有东西被导入。 – Zvezdas1989

0

您是否尝试过get_template_part()函数?这是代码部分旨在导入到主题文件中的方式。 你可以阅读更多关于它here

+0

同样的事情发生在常规进口。它导入代码,但它不起作用。它将我重定向到我的自定义帖子类型中的一篇帖子。说实话没有意义。 – Zvezdas1989

+0

您是否在创建自定义帖子类型模板后刷新了固定链接? – bojan259

+0

是的,我已经做到了。 – Zvezdas1989