Hola Mamomo,
Si lo que quieres es enviar un email notificando a la lista de usuarios registrados como subscriptor, este código te puede servir:
function send_mails_on_publish( $new_status, $old_status, $post ) {
if ( 'publish' !== $new_status or 'publish' === $old_status
or 'my_custom_type' !== get_post_type( $post ) )
return;
$subscribers = get_users( array ( 'role' => 'subscriber' ) );
$emails = array ();
foreach ( $subscribers as $subscriber )
$emails[] = $subscriber->user_email;
$body = sprintf( 'Tenemos una nueva publicación para ti.
Mira <%s>',
get_permalink( $post )
);
wp_mail( $emails, '¡Nueva publicación en ' . bloginfo( 'name' ) . '!', $body );
}
add_action( 'transition_post_status', 'send_mails_on_publish', 10, 3 );
Si lo quieres en plan plugin en vez de meter el código en el functions.php
para poder desactivarlo cuando quieras, está en Github aquí.
Un saludo.
Iniciador del debate
mamomo
(@mamomo)
Primero lo he puesto manualmente, pero al ver que no funcionaba lo he puesto como plugin, pero nada…he probado de publicar varias cosas y no llega ningún correo…puede ser que ya no funcione?
Tienes razón, había errores en el código y además el tipo de entrada que está en el mismo es «my_custom_type».
Este es el código corregido y probado en WP 4.9:
function send_mails_on_publish( $new_status, $old_status, $post ) {
if ( ( 'publish' == $new_status && 'publish' !== $old_status ) && 'post' == $post->post_type ) {
$subscribers = get_users( array ( 'role' => 'subscriber' ) );
$emails = array ();
foreach ( $subscribers as $subscriber ) {
$emails[] = $subscriber->user_email;
$body = sprintf( 'Tenemos una nueva publicación para ti.
Mira <%s>',
get_permalink( $post )
);
// echo "Cuerpo: $body";
wp_mail( $emails, '¡Nueva publicación en ' . get_bloginfo( 'name' ) . '!', $body );
}//foreach
} //end if
}
add_action( 'transition_post_status', 'send_mails_on_publish', 10, 3 );
En un ratillo lo subo a Git.
Iniciador del debate
mamomo
(@mamomo)
Ahora si! Está genial… pero no se puede conseguir que envíe una copia exacta de la publicación?
Iniciador del debate
mamomo
(@mamomo)
No se os ocurre ninguna manera?