Declarație condițională wp_mail la postare

8 iul. 2011, 18:58:47
Vizualizări: 577
Voturi: 0

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

1
Comentarii

poți folosi print_r() într-o atribuire? Nu cred.

Milo Milo
8 iul. 2011 19:09:03
Toate răspunsurile la întrebare 1
1

Iată câteva lucruri:

  1. Folosești ' și " într-un mod foarte nepotrivit!
  2. Folosești echo în interiorul unui șir de caractere. Nu face asta.
  3. 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.

8 iul. 2011 19:13:57
Comentarii

Mulțumesc EAMann! Asta a funcționat... am avut-o cu o grimă stânjenită în template-ul paginii care crea postarea. Soluția finală a fost să pun această funcție în functions.php. Minunat!

Matt Pritchett Matt Pritchett
8 iul. 2011 20:17:26