2017-10-16 15 views
0

こんにちは、私はカスタムの連絡フォームを作ろうとしていますが、いくつか問題があります。 私のテーマファイルにpage-contact-us.phpを作成し、CMSのContact Usページを作成しました。 これはコードです:私はページとして直接使用する場合contact-form.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> 

は今、それはうまく動作しますが、私はそれが動作しません。この<?php include('page-contact-us.php'); ?>ように私のfront-page.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部分がはっきり見える。上記のコードをインクルードしようとすると、C:\ wamp \ www \ imperum \ wp-content \ themes \にあるallow_url_include = 0によってサーバー構成でこの警告:include():http://ラッパーが無効になります。 imperum \ front-page.php on line 331'とこの 'Warning:include(http://localhost/imperum/wp-content/themes/imperum/page-contact-us.php):ストリームのオープンに失敗しました:適切ではありませんラッパーはC:\ wamp \ www \ imperum \ wp-content \ themes \ imperum \ front-page.phpの行331にあります。 – Zvezdas1989

+0

WAMPのphp.iniファイルに移動し、 'allow_url_include = 0 'to' allow_url_include = 1' –

+0

私はそれを試すことができますが、私はすでにあなたのコードを直接サーバー上で運がないと試しました。サーバー上でコードを使用すると何も起こりません。何もインポートされません。 – Zvezdas1989

0

get_template_part()関数を試しましたか?これはコード部分がテーマファイルにインポートされる方法です。 詳しくはhereをご覧ください。

+0

通常のインポートと同じことが起こります。コードをインポートしますが、機能しません。私のカスタム投稿タイプの私の投稿の1つにリダイレクトされます。それは正直では意味がありません。 – Zvezdas1989

+0

カスタムポストタイプテンプレートを作成した後、パーマリンクをフラッシュしましたか? – bojan259

+0

はい私はそれをしました。 – Zvezdas1989

関連する問題