Add notifications for new posts to a site with the Mailgun Subscriptions plugin.
First install and activate the Mailgun Subscriptions plugin.
Then install and activate this plugin just as a normal WordPress plugin.
You'll find the "Mailgun Lists" settings page in the Settings admin menu. After setting up your Mailgun API settings, you can select a list that will receive notifications of new posts.
Return FALSE to this filter to prevent a notification from sending.
function my_filter_for_should_send_mailgun_post_notification( $should_send, $post_id ) {
if ( get_post_meta( $post_id, '_some_interesting_meta_key', TRUE ) == 1 ) {
$should_send = FALSE;
}
return $should_send;
}
add_filter( 'should_send_mailgun_post_notification', 'my_filter_for_should_send_mailgun_post_notification', 10, 2 );Filter the post types for which notifications will be sent. Defaults to just post.
function my_filter_for_mailgun_post_notification_post_types( $post_types ) {
$post_types[] = 'page'; // notify subscribers when a new Page is published
return $post_types;
}
add_filter( 'mailgun_post_notification_post_types', 'my_filter_for_mailgun_post_notification_post_types', 10, 1 );Filter any of the arguments sent to Mailgun to send the email (e.g., filter the 'from' or 'reply-to' headers)
function my_filter_for_mailgun_post_notification_api_arguments( $args ) {
unset($args['text']); // never send text version of the email
return $args;
}
add_filter( 'mailgun_post_notification_api_arguments', 'my_filter_for_mailgun_post_notification_api_arguments', 10, 1 );All emails are sent with both a text version and an HTML version. You can independently manage the templates for each.
The default templates can be found in the plugin's email-templates directory. To override the default templates, created the directory mailgun in your theme, and copy the html and text directories from the plugin into this directory. Your theme's directory structure should look like:
[your_theme]
- mailgun
| - html
| | - new-post.php
| - text
| | - new-post.php
- index.php
- style.css
- etc.
Within your templates, you have access to the global $post object, and normal template tags like the_title(), the_permalink(), and the_excerpt() will all work.