2

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.

1 Answer 1

16

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.

3
  • Thanks very much for the help toscho! I gave your code a try and it appears to be working. Cheers!
    – furio
    Jun 2, 2013 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, 2013 at 23:07
  • 1
    @Chuck See my update or wordpress.stackexchange.com/a/45844/73.
    – fuxia
    Nov 4, 2013 at 1:34

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.