AsynCRONous bbPress Subscriptions

Email notifications done right. No BCC lists, no added page load time.

Author:Markus Echterhoff (profile at wordpress.org)
WordPress version required:3.6
WordPress version tested:5.4.4
Plugin version:3.7
Added to WordPress repository:11-03-2015
Last updated:06-07-2020
Warning! This plugin has not been updated in over 2 years. It may no longer be maintained or supported and may have compatibility issues when used with more recent versions of WordPress.
Rating, %:100
Rated by:8
Plugin URI:https://wordpress.org/plugins/asyncronous-bbp...
Total downloads:5 717
Active installs:200+
plugin download
Click to start download

Per default, bbPress is sending subscription notification emails as one email with a bunch of BCCs. There are various reasons why it would make more sense to send individual emails. This plugin does that, quietly in the background via WP cron, without slowing down page load times. Also increases notification performance and reduces database load on large sites.

Translations by @mauriciogarofalo and @mechter

Defaults

If you don’t customize this plugin, this is what you’ll get:

  • Sends mails from "MyBlog <admin@MyBlog.foo>" (with your Blog’s name and admin email)
  • Sends mail to "Markus <markus@example.com>" (with the name being the user’s display name on the forums, not their username)
  • Subject and Message have more user friendly defaults, use the available filters (see below) to make them your own.

Customization

You can install and activate this plugin and it just works, but you have full control over the details if you want to. Below are some filters and code snippets that help you do what you want. If you’re new to working directly with code, please see the example at the bottom of this page.

Available filters

bbp_subscription_email_from( $from ) // $from can be a string or array('name'=>string, 'address'=>string)
bbp_subscription_email_recipients( $recipients ) // $recipients is array of array('name'=>string, 'address'=>string)
bbp_subscription_email_headers( $headers )
bbp_forum_subscription_email_subject( $subject, $forum_id, $topic_id )
bbp_forum_subscription_email_message( $message, $forum_id, $topic_id )
bbp_topic_subscription_email_subject( $subject, $forum_id, $topic_id, $reply_id )
bbp_topic_subscription_email_message( $message, $forum_id, $topic_id, $reply_id )

bbp_bounce_address( $bounce_address )

bbp_subscription_disable_async( false )
bbp_forum_subscription_disable_async( false )
bbp_topic_subscription_disable_async( false )
bbp_forum_subscription_notify_author( false )
bbp_topic_subscription_notify_author( false )

Helpful Snippets

Here are some pointers to get the data you might want in your notifications:

$blog_name = get_bloginfo( 'name' );

$forum_title = bbp_get_forum_title( $forum_id );

$topic_author_user_id = bbp_get_topic_author_id( $topic_id );
$topic_author_display_name = bbp_get_topic_author_display_name( $topic_id );
$topic_title = wp_specialchars_decode( strip_tags( bbp_get_topic_title( $topic_id ) ), ENT_QUOTES );
$topic_content = wp_specialchars_decode( strip_tags( bbp_get_topic_content( $topic_id ) ), ENT_QUOTES );
$topic_url = get_permalink( $topic_id );

$reply_author_user_id = bbp_get_reply_author_id( $reply_id );
$reply_author_display_name = bbp_get_topic_author_display_name( $reply_id );
$reply_content = strip_tags( bbp_get_reply_content( $reply_id ) );
$reply_url = bbp_get_reply_url( $reply_id ); // note that it's not get_permalink()

Example

To have a nice subject line for new topic notifications, add this to your theme’s functions.php. If your theme does not have this file, you can simply create it and it will be loaded automatically. Note how the example is basically just one of the filters above, mixed with some of the snippets and a return statement. It’s that simple.

add_filter( 'bbp_forum_subscription_email_subject', function( $subject, $forum_id, $topic_id ) {
    $blog_name = get_bloginfo( 'name' );
    $topic_author_display_name = bbp_get_topic_author_display_name( $topic_id );
    $topic_title = wp_specialchars_decode( strip_tags( bbp_get_topic_title( $topic_id ) ), ENT_QUOTES );
    return "[$blog_name] $topic_author_display_name created a new topic: $topic_title";
}, 10, 3); // first is priority (10 is default and just fine), second is number of arguments your filter expects

FAQ
ChangeLog