Dichiarazione condizionale wp_mail sul post

8 lug 2011, 18:58:47
Visualizzazioni: 577
Voti: 0

Attualmente sto pubblicando dal front-end utilizzando un modello simile a http://voodoopress.com/2011/03/review-of-posting-from-front-end-form/. Voglio inviare un'email a determinati indirizzi in base al valore del campo "problem_type". Questo è quello che ho finora. Questo codice non invia nulla, ma sono a un punto morto. Idee? Ho bisogno solo di 3 email diverse. 1 se il valore è computers, 1 se il valore è phones, e tutti gli altri valori possono essere inviati a un terzo indirizzo email.

function new_post_creation_email($pid) {
    $problem_type = get_post_meta($pid, 'problem_type', true); // Ottieni il valore del campo personalizzato problem_type
    $description = 'post_content'; // Contenuto del post

    if ($problem_type == 'phones') {
        $to = '1st email here'; // Email per problemi con i telefoni
    } elseif ($problem_type == 'computers') {
        $to = '2nd email here'; // Email per problemi con i computer
    } else {
        $to = '3rd email here'; // Email per tutti gli altri problemi
    }

    $subject = "New Ticket in ' . echo get_post_meta($pid, 'problem_type', true) . "; // Oggetto dell'email
    $message = "A user profile has been updated\n\n"; // Messaggio dell'email
    $message .= print_r($description,true);
    @wp_mail( $to, $subject, $message); // Invia l'email
}

add_action('wp_insert_post','new_post_creation_email'); // Aggiungi l'azione al hook wp_insert_post

Ovviamente i valori "1st email here" ecc. sono stati sostituiti con veri indirizzi email nel codice reale.

1
Commenti

puoi usare print_r() in un'assegnazione? Non credo proprio.

Milo Milo
8 lug 2011 19:09:03
Tutte le risposte alla domanda 1
1

Ecco un paio di cose:

  1. Stai mischiando ' e " in modo molto sbagliato!
  2. Stai usando echo all'interno di una stringa. Non farlo.
  3. Stai silenziando qualsiasi errore sulla funzione wp_mail, quindi se WordPress ti sta dando un errore non lo vedrai mai!

Per prima cosa, risolvi il problema con ' e ". La tua definizione di $subject dovrebbe essere così:

$subject = "Nuovo Ticket in " . get_post_meta($pid, 'problem_type', true);

Questa correzione risolve anche il problema con echo.

Successivamente, rimuovi il @ davanti a wp_mail e attiva WP_DEBUG nei tuoi file di configurazione in modo da poter vedere eventuali errori che si presentano.

8 lug 2011 19:13:57
Commenti

Grazie EAMann! Questo ha funzionato... sorriso imbarazzato l'avevo messo nel template della pagina che creava il post. La soluzione finale è stata inserire questa funzione nel file functions.php. Fantastico!

Matt Pritchett Matt Pritchett
8 lug 2011 20:17:26