フォームが送信されたら、ページからEメールを送信する必要があります。
私は私がjQueryのポストを使用すると思いましたが、私はどこから始めるべきか本当によくわかりません。 wp_mail()
を使いますか?そしてもしそうなら、それはどのように呼ばれることができますか?
それがあいまいに思えば申し訳ありません。フォームがそのデータを別のサイトに投稿する前に、クライアントにEメールを送信しようとしているだけです。
$('#donationForm').submit(function() {
// send email to client before moving onto worldpay payment form
// send data to worldpay....
this.submit();
});
基本的に、JavaScriptを使用してWordPress関数に投稿し、WordPress関数がwp_mail()
を呼び出してメッセージを送信できます。
始めるのに最適な場所は、Codexの有用な プラグインのAJAX の記事です。 JavaScriptをフロントエンドに追加するために必要なすべてのステップ、バックエンドにPHP、および2つを結び付けるために必要なすべての手順を説明します。
最初にあなたの電子メール処理機能を追加し、あなたのwp_ajax
を使ってこのようにfunctions.php
フックにそれをフックしてください:
// if you want only logged in users to access this function use this hook
add_action('wp_ajax_mail_before_submit', 'mycustomtheme_send_mail_before_submit');
// if you want none logged in users to access this function use this hook
add_action('wp_ajax_nopriv_mail_before_submit', 'mycustomtheme_send_mail_before_submit');
// if you want both logged in and anonymous users to get the emails, use both hooks above
function mycustomtheme_send_mail_before_submit(){
check_ajax_referer('my_email_ajax_nonce');
if ( isset($_POST['action']) && $_POST['action'] == "mail_before_submit" ){
//send email wp_mail( $to, $subject, $message, $headers, $attachments ); ex:
wp_mail($_POST['toemail'],'this is the email subject line','email message body');
echo 'email sent';
die();
}
echo 'error';
die();
}
それから、あなたのテーマのjsファイルの中に、次のようにAJAX呼び出しを作成します。
jQuery('#donationForm').submit(function() {
// send email to client before moving onto worldpay payment form
var data = {
action: 'mail_before_submit',
toemail: $('#myemailfield').val(), // change this to the email field on your form
_ajax_nonce: $('#my_email_ajax_nonce').data('nonce'),
};
jQuery.post(window.location.Origin + "/wp-admin/admin-ajax.php", data, function(response) {
console.log('Got this from the server: ' + response);
});
});
それはPHP経由で生成される必要があるので今すぐあなたのfooter.php
にnonceを追加してください:
...
<span id="my_email_ajax_nonce" data-nonce="<?php echo wp_create_nonce( 'my_email_ajax_nonce' ); ?>"></span>
<?php wp_footer(); ?>
...
そしてあなたは設定されるべきです。