Declaración condicional wp_mail en la publicación

8 jul 2011, 18:58:47
Vistas: 577
Votos: 0

Actualmente estoy publicando desde el front-end usando un modelo similar al de http://voodoopress.com/2011/03/review-of-posting-from-front-end-form/. Quiero enviar un correo electrónico a ciertas direcciones basadas en el valor del campo "problem_type". Esto es lo que tengo hasta ahora. Esto no envía nada en absoluto, pero estoy en un callejón sin salida. ¿Ideas? Solo necesito 3 correos electrónicos diferentes. 1 si el valor es computers, 1 si el valor es phones, y cualquier otro valor puede enviarse a una tercera dirección de correo electrónico.

function new_post_creation_email($pid) {
    $problem_type = get_post_meta($pid, 'problem_type', true);
    $description = 'post_content';

    if ($problem_type == 'phones') {
        $to = '1er correo aquí';
    } elseif ($problem_type == 'computers') {
        $to = '2do correo aquí';
    } else {
        $to = '3er correo aquí';
    }

    $subject = "Nuevo ticket en " . get_post_meta($pid, 'problem_type', true);
    $message = "Un perfil de usuario ha sido actualizado\n\n";
    $message .= print_r($description,true);
    @wp_mail( $to, $subject, $message);
}

add_action('wp_insert_post','new_post_creation_email');

Obviamente el "1er correo aquí" etc. han sido reemplazados con direcciones de correo electrónico reales en el código real.

1
Comentarios

¿puedes usar print_r() en una asignación? No lo creo.

Milo Milo
8 jul 2011 19:09:03
Todas las respuestas a la pregunta 1
1

Aquí hay un par de cosas:

  1. Estás mezclando ' y " de una manera muy incorrecta.
  2. Estás usando echo dentro de una cadena. No hagas eso.
  3. Estás silenciando cualquier error en la función wp_mail, así que si WordPress te da un error ¡nunca lo verás!

Primero, corrige tu problema con ' y ". La definición de tu $subject debería verse así:

$subject = "Nuevo Ticket en " . get_post_meta($pid, 'problem_type', true);

Esta corrección también soluciona el problema del echo.

A continuación, elimina el @ que está delante de wp_mail y activa WP_DEBUG en tus archivos de configuración para que puedas ver cualquier error que aparezca.

8 jul 2011 19:13:57
Comentarios

¡Gracias EAMann! Esto hizo que funcionara... sonrisa tímida lo tenía en la plantilla de página que estaba creando la publicación. La solución final fue colocar esta función en functions.php. ¡Genial!

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