Notificar por email al propietario de un post cuando se pública

php_condicionales

¿Necesitas mandar una notificación por email cuando se pública un post de algún colaborador de tu blog?, Esta es la función.


function authorNotification($post_id)

{

   global $wpdb; //Variable global de wordpress para él manejo de la base de datos
   $post = get_post(post_id); // variable que recoge el id del post
   $author = get_userdata($post->post_author); //variable que recoge al propietario del post

// El mensaje

$message = " Hola ".$author->display_name.", tu articulo, ".$post->post_title." ha sido públicado.";

wp_mail ($author->user_email, "Tu artículo esta publicado", $message); 

}

add_action('publish_post', 'authorNotification');

Joker

Como ya hemos comentado el código vamos a ver la función wp_mail que realmente es la más importante.
Esta es una function que nos viene con wordpress y que necesita unos parámetros para poder sacarle partido, el destinatario que en este caso será el $author->user_email, o también la dirección de correo directamente pero, de esta última no sabríamos quien es el author y siempre mandaríamos el email a la misma persona
Por otra parte tendríamos el asunto del mensaje y la variable $mensaje, que es nuestro mensaje personalizado que tenemos creado en el cuerpo de la función. También podemos pasar encabezados ($headers) y archivos para adjuntar ($attachments).

Os dejo el enlace del codex de wordpress de la función wp_mail para que veáis por vosotros mismo las posibilidades de esta función.

Espero que os sirva y que comenteis si os surge alguna duda.

  • Directorio de articulos

    Lo he puesto en el functions.php de mi tema y no funciona. Que hago mal?

    • Garytto

      Hola, Gracias por comentar,
      prueba con este script

      function authorNotification() {

      global $post;

      $author = get_user_by( ‘id’, (int) $post->post_author );

      $to = $author->data->user_email;

      $subject = ‘Un post de tu propiedad ha sido modificado’;

      $message = “El Artículo es ‘” . $post->post_title . “‘ (” . get_permalink( $post->ID ) . ‘) has been modified on ‘ . date( ‘Y-m-d (H:i:s)’, time() );

      wp_mail( $to, $subject, $message );

      }

      Espero que este si que te funcione!

      Saludos

  • Johna835

    I loved your post.Much thanks again. bkdkkdgdeaag