2016-09-06 19 views
0

私は自分のウェブサイトで連絡フォームを作成しようとしています。Wordpress Homepageフォームが機能しない

私は過去にPHP静的なウェブサイトのために私のために働いていたスクリプトを使用しています。

今、私はそれを私のWordPressのホームページに実装しようとしていますが、動作しないようです。

私が提出すると、ブログページ、または「ホームページ」にリダイレクトされますが、代わりにブログエントリがあります。

送信時にエコー検証を取得する必要がありますが、それは起こりません。

私はaction = ""、action = "#"、PHP_SELF、action = "/"、action = "index"、action = "index.php"を試しています。

これは私のコードです:

<?php 

$send = $_POST['send'] 

// Address to get the mails 
$EmailTo = "[email protected]"; 


// Form input fields 
$name = $_POST['name']; 
$email = $_POST['email']; 

$subject = explode('|', $_POST['dropdown']);; 

$message = $_POST['message']; 

if (isset($send)) { 

    if (empty($email)) { 
     $output = 'Hey, I need your email to reply'; 
    } 

    elseif (empty($name)) { 
     $output = 'Ups, you forgot your name'; 
    } 

    else{ 
     mail("[email protected]", $subject, $message, "From: $email\n"); 
     $output = 'Thanks, your submission has been sent'; 
    } 
} 

?> 

そして、私のHTMLフォーム

<form method="post" action=""> 

       <p><?php echo $output; ?></p> 

       <label for="name">Your beautiful name goes here</label> 
       <input type="text" name="name" id="name"> 

       <label for="mail">I need your email to write you back, type it below</label> 
       <input type="email" name="mail" id="mail"> 

       <label for="dropdown">Are you looking for help in something specific or just wanted to say HI?</label> 
       <select name="dropdown" id="dropdown"> 
        <option>Just wanted to say Hi!</option> 
        <option>I need help with my brand</option> 
        <option>I want to launch a website</option> 
        <option>Other</option> 
       </select> 

       <label for="else">Is there something else you want to tell me?</label> 
       <textarea name="else" id="else"> 

       </textarea> 

       <button class="btn btn-red" name="send" type="submit">SEND</button> 

      </form> 
+0

あなたのPHPコードはどのファイルですか? –

+0

おそらく、プレイ中のワードプレスモードの書き換えルール。なぜあなたはワードプレスでこれをやっていけないのですか? – nogad

+0

構文エラーをチェックしましたか?私は ';'を一行で参照しています –

答えて

0

はwww.yourdomain.com/form-processor-、すなわち、フォームアクションで完全修飾URLを使用してみてくださいscript.php。

サイドノートでは、一般的に、フォームは自己に送信されるべきではありません。これは、ユーザーがブラウザの更新ボタンを使用してフォームデータを再送信できるので、悪い "フォーム"です。また、プレゼンテーション層にロジックを注入します。 Post-Redirect-GetパターンまたはPRGパターンを調べてください。

+0

アドバイスをありがとう。私はそれをやる。 – Ferrius

+0

私はすでに正確なURLを入力しようとしましたが、うまくいきませんでした。 – Ferrius

+0

何がうまくいかなかったのですか?フォーム処理スクリプト?私はあなたがワードプレスで単純なmail()関数を使用することはできないと思う。フォームがターゲットアクションの場所にデータを送信していませんか? Wordpressにはwp_mail()関数が組み込まれています。フォーム処理スクリプトを簡単な出力に置き換えて、フォームが送信されていることを確認してください。次に、スクリプトのトラブルシューティングを行います。それが立っているので、電子メールが正しい場合にスクリプトが動作することだけを知っていますか?フォーム提出と電子メールがトリガーされる間に、多くのことが間違っている可能性があります。 – joeDaigle

0

いくつかの調査を行った後、フォームアクションを実行する最善の方法は、フォームのHTMLと処理をWPプラグインに変えることです。

あなたは

<?php 

/* 
    Plugin Name: Contact Form Plugin 
    Plugin URI: http://ferrius.co 
    Description: Simple non-bloated WordPress Contact Form 
    Version: 1.0 
    Author: Sebastian Ferreira 
    Author URI: http://ferrius.co 
*/ 


function html_form_code() { 

    echo '<form action="' . esc_url($_SERVER['REQUEST_URI']) . '" method="post">'; 
    echo '<br>'; 

    echo '<label for="cf-name">Your beautiful name goes here</label>'; 
    echo '<input type="text" name="cf-name" pattern="[a-zA-Z0-9 ]+" value="' . (isset($_POST["cf-name"]) ? esc_attr($_POST["cf-name"]) : '') . '"/>'; 

    echo '<label for="cf-email">I need your email to write you back, type it below</label>'; 
    echo '<input type="email" name="cf-email" value="' . (isset($_POST["cf-email"]) ? esc_attr($_POST["cf-email"]) : '') . '"/>'; 

    echo '<label for="cf-subject">Are you looking for help in something specific or just wanted to say HI?</label>'; 
    echo '<input type="text" name="cf-subject" pattern="[a-zA-Z ]+" value="' . (isset($_POST["cf-subject"]) ? esc_attr($_POST["cf-subject"]) : '') . '" />'; 

    echo '<label for="cf-message">Is there something else you want to tell me?</label>'; 
    echo '<textarea name="cf-message">' . (isset($_POST["cf-message"]) ? esc_attr($_POST["cf-message"]) : '') . '</textarea>'; 

    echo '<button class="btn btn-red" type="submit" name="cf-submitted" value="SEND"/>SEND</button>'; 
    echo '</form>'; 

} 

function deliver_mail() { 

    // if the submit button is clicked, send the email 
    if (isset($_POST['cf-submitted'])) { 

     // sanitize form values 
     $name = sanitize_text_field($_POST["cf-name"]); 
     $email = sanitize_email($_POST["cf-email"]); 
     $subject = sanitize_text_field($_POST["cf-subject"]); 
     $message = esc_textarea($_POST["cf-message"]); 

     // get the blog administrator's email address 
     $to = "[email protected]"; 

     $headers = "From: $name <$email>" . "\r\n"; 

     // If email has been process for sending, display a success message 
     if (wp_mail($to, $subject, $message, $headers)) { 
      echo '<div>'; 
      echo '<p>Thanks for contacting me, expect a response soon.</p>'; 
      echo '</div>'; 
     } else { 
      echo 'An unexpected error occurred'; 
     } 
    } 
} 

function cf_shortcode() { 
    ob_start(); 
    deliver_mail(); 
    html_form_code(); 

    return ob_get_clean(); 
} 

add_shortcode('ferrius_contact_form', 'cf_shortcode'); 

?> 

下のコードでそれを見ることができますが、それが誰かのために有用だと思います。

関連する問題