Script wp_mail cu postare jQuery
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();
});
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.

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

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

Î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ă.
