Script wp_mail cu postare jQuery

31 mai 2011, 20:16:11
Vizualizări: 16.5K
Voturi: 4

Am nevoie să trimit un email de pe o pagină când un formular este trimis.

M-am gândit să folosesc jQuery post dar nu sunt sigur de unde să încep. Ar trebui să folosesc wp_mail()? Și dacă da, cum ar putea fi apelată?

Îmi cer scuze dacă pare vag. Încerc doar să trimit un email către client înainte ca un formular să trimită datele către un alt site;

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

// trimite email către client înainte de a trece la formularul de plată worldpay


// trimite date către worldpay....
this.submit();

});
0
Toate răspunsurile la întrebare 2
3
12

Mai întâi, adăugați funcția de procesare a email-ului și conectați-o la cârlige wp_ajax astfel în functions.php:

// dacă doriți ca doar utilizatorii autentificați să aibă acces la această funcție, folosiți acest cârlig
add_action('wp_ajax_mail_before_submit', 'mycustomtheme_send_mail_before_submit');

// dacă doriți ca utilizatorii neautentificați să aibă acces la această funcție, folosiți acest cârlig
add_action('wp_ajax_nopriv_mail_before_submit', 'mycustomtheme_send_mail_before_submit');

// dacă doriți ca atât utilizatorii autentificați, cât și cei anonimi să primească email-uri, folosiți ambele cârlige de mai sus

function mycustomtheme_send_mail_before_submit(){
    check_ajax_referer('my_email_ajax_nonce');
    if ( isset($_POST['action']) && $_POST['action'] == "mail_before_submit" ){

    //trimite email wp_mail( $to, $subject, $message, $headers, $attachments ); ex:
        wp_mail($_POST['toemail'],'acesta este subiectul email-ului','conținutul mesajului email');
        echo 'email trimis';
        die();
    }
    echo 'eroare';
    die();
}

Apoi, în fișierul js al temei, creați apelul AJAX astfel:

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

// trimite email către client înainte de a trece la formularul de plată worldpay
var data = {
    action: 'mail_before_submit',
    toemail: $('#myemailfield').val(), // modificați aceasta pentru a corespunde câmpului de email din formularul dumneavoastră
    _ajax_nonce: $('#my_email_ajax_nonce').data('nonce'),
};
jQuery.post(window.location.origin + "/wp-admin/admin-ajax.php", data, function(response) {
    console.log('Am primit acest răspuns de la server: ' + response);
});

});

Acum adăugați nonce-ul în footer.php, deoarece trebuie generat prin PHP:

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

Și ar trebui să fie gata.

1 iun. 2011 02:29:59
Comentarii

mers! am reușit să fac asta să funcționeze dar a trebuit să elimin '_ajax_nonce' deoarece genera eroare. Este important? Dc

v3nt v3nt
1 iun. 2011 15:18:23

este modul corect și o practică bună pentru a securiza apelurile ajax.

Bainternet Bainternet
1 iun. 2011 15:41:44

Mulțumesc, mi-a luat ceva timp, dar aceasta a fost o explicație destul de clară. Foarte apreciat.

plushyObject plushyObject
18 sept. 2016 21:34:58
0

În esență, poți utiliza JavaScript pentru a trimite către o funcție WordPress, iar apoi funcția WordPress poate invoca wp_mail() pentru a trimite mesajul.

Un loc excelent de început ar fi articolul util AJAX în Plugin-uri din Codex. Acesta te ghidează prin toți pașii necesari pentru a adăuga JavaScript-ul tău pe partea de front-end, PHP-ul pe back-end și tot ce este necesar pentru a le conecta împreună.

1 iun. 2011 02:19:05