How to auto send email when publishing a custom post type?

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.

Related posts

1 comment

  1. 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.

Comments are closed.