I'd like to have an email automatically sent out to my website's subscribers when I publish a post for a specific custom post type. I've found a few plugins that will do this but only for regular posts (or for any post type that gets published, not allowing you to specify a particular post type). Any suggestions would be greatly appreciated! Thanks.
Hook into transition_post_status
, fetch the users and send an email to all users.
Sample code, not tested:
add_action( 'transition_post_status', 'send_mails_on_publish', 10, 3 );
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( 'Hey there is a new entry!
See <%s>',
get_permalink( $post )
);
wp_mail( $emails, 'New entry!', $body );
}
You should probably use the Bcc
field.
-
Thanks very much for the help toscho! I gave your code a try and it appears to be working. Cheers! – furio Jun 2 '13 at 19:28
-
@toscho or furio, this is working almost perfect for me, thanks, do either of you know how to modify it so each user just sees that it was sent to them, not to user1, user2, user3... – Chuck Nov 3 '13 at 23:07
-
1