Here’s a quick snippet for sending an email when a post is sent for review. (Post status: Pending) This happens when a Contributor writes a post. Since they don’t have the publish_post capability, their post will have the status of “pending”. (Do you want to send email when a new post is published? Read this post instead!)
add_action('future_to_pending', 'send_emails_on_new_event'); add_action('new_to_pending', 'send_emails_on_new_event'); add_action('draft_to_pending', 'send_emails_on_new_event'); add_action('auto-draft_to_pending', 'send_emails_on_new_event'); /** * Send emails on event publication * * @param WP_Post $post */ function send_emails_on_new_event($post) { $emails = "email_1@mail.com, email_2@mail.com"; //If you want to send to site administrator, use $emails = get_option('admin_email'); $title = wp_strip_all_tags(get_the_title($post->ID)); $url = get_permalink($post->ID); $message = "Link to post: \n{$url}"; wp_mail($emails, "New post published: {$title}", $message); }
This will result in an email like this:
[Title] New post published: Your Post Link to post: http://site.com/your-post/
If you need to do this for a specific post type only you can have a conditional inside the filter function:
... if(get_post_type($post->ID) === 'page') //post, page, attachment or whatever other CPT you may have { //use wp_mail() here! } ...