it-swarm.com.de

wp_mail-Skript mit jQuery-Post

Ich muss eine E-Mail von einer Seite senden, wenn ein Formular gesendet wird.

Ich dachte, ich würde jQuery post verwenden, bin mir aber nicht sicher, wo ich anfangen soll. Würde ich wp_mail() verwenden? Und wenn ja, wie könnte es heißen?

Entschuldigung, wenn das vage erscheint. Sie versuchen lediglich, eine E-Mail an den Client zu senden, bevor ein Formular seine Daten an eine andere Site sendet.

$('#donationForm').submit(function() {

// send email to client before moving onto worldpay payment form


//  send data to worldpay....
this.submit();

});
4
v3nt

Grundsätzlich können Sie JavaScript zum Posten in eine WordPress-Funktion verwenden. Anschließend kann die WordPress-Funktion wp_mail() aufrufen, um die Nachricht zu senden.

Ein guter Anfang wäre der nützliche Artikel AJAX in Plugins im Codex. Es führt Sie durch alle Schritte, die erforderlich sind, um Ihr JavaScript im Front-End, Ihr PHP im Back-End und alles, was Sie tun müssen, um die beiden zu verbinden, hinzuzufügen.

2
EAMann

Fügen Sie zuerst Ihre E-Mail-Verarbeitungsfunktion hinzu und binden Sie sie mit Ihrem wp_ajax an functions.php-Hooks wie folgt ein:

// 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();
}

Dann erstellen Sie in der js-Datei Ihres Themas den AJAX -Aufruf wie folgt:

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);
});

});

Fügen Sie nun das Nonce zu Ihrem footer.php hinzu, da es über PHP generiert werden muss:

...
<span id="my_email_ajax_nonce" data-nonce="<?php echo wp_create_nonce( 'my_email_ajax_nonce' ); ?>"></span>
<?php wp_footer(); ?>
...

Und du solltest bereit sein.

10
Bainternet