I’ve been using the “Subscribe To Comments Reloaded” for a few years. Although the core features worked fine, some items like email security (especially Google reCAPTCHA) seemed to stop working.
After a lot of research and testing, I came up with an easier solution that is super lightweight and doesn’t require a plugin. You’ll just update your child theme’s “functions.php” file.
The code below does four things:
- Sets up the emails to be sent in HTML.
- Emails a commenter when their comment is approved.
- Emails a commenter when someone replies to their comment.
- Allows you to customize the “Your comment is awaiting moderation” text as well as adds an “awaiting-moderation” class to this text to help you stylize this alert.
// =========================================================================
// Comment Notifications & Moderation Notice
// =========================================================================
// Set HTML mail content type
function set_html_content_type() {
return 'text/html';
}
// Notify commenter when comment is approved
add_action('wp_set_comment_status', 'notify_comment_author_on_approval', 10, 2);
function notify_comment_author_on_approval($comment_id, $comment_status) {
if ($comment_status == 'approve') {
$comment = get_comment($comment_id);
$email = $comment->comment_author_email;
$post = get_post($comment->comment_post_ID);
$subject = 'Your comment on ' . $post->post_title . ' was approved';
$message = 'Hi ' . $comment->comment_author . ',<br><br>';
$message .= 'Your comment on "' . $post->post_title . '" has been approved!<br><br>';
$message .= '<a href="' . get_comment_link($comment) . '">View your comment here</a>.<br><br>';
$message .= 'Thanks,<br>';
$message .= 'YOUR NAME<br>';
$message .= get_bloginfo('name');
add_filter('wp_mail_content_type', 'set_html_content_type');
wp_mail($email, $subject, $message);
remove_filter('wp_mail_content_type', 'set_html_content_type');
}
}
// Notify commenter when comment is replied to
add_action('comment_post', 'notify_comment_author_on_reply', 10, 2);
function notify_comment_author_on_reply($comment_id, $comment_approved) {
$comment = get_comment($comment_id);
if ($comment->comment_parent) {
$parent_comment = get_comment($comment->comment_parent);
$email = $parent_comment->comment_author_email;
$post = get_post($comment->comment_post_ID);
$subject = 'Someone replied to your comment on ' . $post->post_title;
$message = 'Hi ' . $parent_comment->comment_author . ',<br><br>';
$message .= 'Someone has replied to your comment on "' . $post->post_title . '"!<br><br>';
$message .= '<a href="' . get_comment_link($comment) . '">View your reply here</a>.<br><br>';
$message .= 'Thanks,<br>';
$message .= 'YOUR NAME<br>';
$message .= get_bloginfo('name');
add_filter('wp_mail_content_type', 'set_html_content_type');
wp_mail($email, $subject, $message);
remove_filter('wp_mail_content_type', 'set_html_content_type');
}
}
// Customize 'Your comment is awaiting moderation.' text
add_filter( 'gettext', function( $text ) {
if ( 'Your comment is awaiting moderation.' === $text ) {
$text = '<span class="awaiting-moderation">Thanks! you\'ll be notified you once your comment has been approved.</span>';
}
return $text;
});
Caveats
- Change the “YOUR NAME” in the code above to your name, or remove this line completely.
- This doesn’t allow users to unsubscribe or manage email subscriptions to your posts.
- Make sure you’re doing any updates to “functions.php” in a child theme.
- You’ll need to make sure that email is processing properly.
Recommendations on preventing spam:
What do you think?