Declarație condițională wp_mail la postare
În prezent postez din front-end folosind un model similar cu http://voodoopress.com/2011/03/review-of-posting-from-front-end-form/. Doresc să trimit un email către anumite adrese în funcție de valoarea câmpului "problem_type". Iată ce am făcut până acum. Acest cod nu trimite nimic, dar am ajuns într-un punct mort. Idei? Am nevoie doar de 3 email-uri diferite. 1 dacă valoarea este computers, 1 dacă valoarea este phones, iar orice altă valoare să fie trimisă către o a 3-a adresă de email.
function new_post_creation_email($pid) {
$problem_type = get_post_meta($pid, 'problem_type', true);
$description = 'post_content';
if ($problem_type == 'phones') {
$to = 'prima adresa email aici';
} elseif ($problem_type == 'computers') {
$to = 'a doua adresa email aici';
} else {
$to = 'a treia adresa email aici';
}
$subject = "Ticket nou în ' . echo get_post_meta($pid, 'problem_type', true) . ";
$message = "Un profil de utilizator a fost actualizat\n\n";
$message .= print_r($description,true);
@wp_mail( $to, $subject, $message);
}
add_action('wp_insert_post','new_post_creation_email');
Evident că "prima adresa email aici" etc au fost înlocuite cu adrese de email reale în codul real.

Iată câteva lucruri:
- Folosești ' și " într-un mod foarte nepotrivit!
- Folosești
echo
în interiorul unui șir de caractere. Nu face asta. - Anulezi orice erori la funcția
wp_mail
, așa că dacă WordPress îți dă o eroare, nu o vei vedea niciodată!
Mai întâi, rezolvă problema cu ' și ". Definiția ta $subject
ar trebui să arate astfel:
$subject = "New Ticket in " . get_post_meta($pid, 'problem_type', true);
Această corecție rezolvă și problema cu echo
.
Apoi, elimină @
din fața lui wp_mail
și activează WP_DEBUG în fișierele tale de configurare pentru a putea vedea orice erori care apar.
