web-dev-qa-db-ja.com

連絡フォーム7が送信されたときにサーバーサイドスクリプトを実行する方法

私はワードプレスに慣れていないと私は簡単なフォームを作成しようとしています。私は現在連絡フォーム7を使用しています、そしてこれまでのところそれはそれがいいと思います。しかし今、私はフォームが送信されたときにサーバーサイドコードを実行しようとしています。基本的には、送信時にfrom変数からpost変数を取得して、スクリプト内でフォームデータを使用できるようにすることだけです。それでも、フォームが送信されたときにEメールアドレスに送信されるEメール機能が必要です。

私がコードの中で何かを変更する必要なしにそれをする簡単でより効率的な方法はありますか?

5
drifter

Eメールを正常に送信した後にトリガーされるwpcf7_before_send_mailフックが必要です。これをfunctions.phpに追加するだけです。

add_action( 'wpcf7_before_send_mail', 'process_contact_form_data' );
function process_contact_form_data( $contact_data ){

    var_dump($contact_data->posted_data);
            $name = $contact_data->posted_data["your-name"];
    $email = $contact_data->posted_data["your-email"];

    echo $name ;
    echo $email;                
}

$contact_data->posted_data配列内の名前でフィールドにアクセスできます。


はい。あなたはjavascriptまたは上記の機能から別のページにリダイレクトすることができます。 javascriptでは、作成した連絡フォームの 追加設定 に次の行を追加する必要があります。

on_sent_ok: "location = 'http://youdomain.com/thankyou.php';"

しかし、これではフォームから送信された値を使用することはできません。だから別の方法に行きなさい。

上記の関数から thankyou ページにリダイレクトします。しかしリダイレクトする前に、 thankyou pageに表示したい情報を _ session _ /変数に設定してください(name、email、formの件名フィールドなど)。次に thankyou ページで、それらの値を取得して表示します。後で、セッション変数を破棄し、それらの特定の変数が設定されているかどうかを毎回確認することができます。これはブラウザから直接 thankyou urlを打つことに対する制御を与え、ページに直接アクセスできないという適切なメッセージを表示します。

7
SachinGutte