Plugin WP: notificar por email nuevo post de un colaborador.

Share on facebook
Share on twitter
Share on telegram
Share on whatsapp
Share on email
Share on print

Hace unos días la empresa para la que trabajo (un periódico) me pidió que viera la forma de que los redactores/editores sean notificados por email cada vez que un periodista colaborador realiza una publicacion en la pagina web.

La misma queda en un principio marcada como pendiente de revisión hasta que un usuario con un perfil más elevado la revisa, corrige y finalmente publica.

Para esto cree un simple plugin que no modifica la db como otros que encontre por ahí, en pocas palabras chequea el estado de un post. Si detecta que hay un post con status pendiente dispara una función que envía un mail a los destinatarios que declaro en una línea.

A continiación dejo el codigo del plugin para quien necesite una función similar.

<?php
/*
Plugin Name: Notifica Nueva Colaboracion
Plugin URI: www.gonzalorau.com
Description: Envía un email cada vez que un colaborador realiza un post y lo envía a revisión
Version: 1.0
Author: Gonzalo Rau
Author URI: www.gonzalorau.com
License: GLP
*/

if ( ! defined( 'ABSPATH' ) ) exit; // Exit... si acceden directamente

// ENVÍA UN EMAIL CUANDO SE PUBLICA UN POST PARA REVISIÓN

add_action( 'transition_post_status', 'GRnuevaColaboracion', 500, 3 );


function GRnuevaColaboracion( $new_status, $old_staus, $post ) {
      if ( $new_status !== 'pending' || $old_staus === 'pending' )
      return; 

      ($autor = $post->post_author);                              // ID del autor
      ($nombre = get_the_author_meta( 'display_name',$autor ));  //nombre del autor del post
      ($titulo = $post->post_title);                              // Título del post
      ($enlace = get_permalink( $post ));                         // obtiene la URL de la nota
      ($editar = get_edit_post_link( $post ));
      ($asunto = "Nuevo post para revisar de $nombre");           // asunto del email de notificación
      ($mensaje = "El siguiente post está listo para su revisión y publicación:\n 
      Título: $titulo \n
      Autor: $nombre  \n
      Ver: $enlace \n
      Editar post: $editar");
      ($enviar_a = "ioioioio@gmail.com");                       //ej "test@email.com test2@email.com"
      wp_mail( $enviar_a, $asunto, $mensaje );
}

Comenta!