wp_notify_postauthor( int|WP_Comment $comment_id, string $deprecated = null )
Notify an author (and/or others) of a comment/trackback/pingback on a post.
Description
Parameters
- $comment_id
-
(Required) Comment ID or WP_Comment object.
- $deprecated
-
(Optional) Not used
Default value: null
Return
(bool) True on completion. False if no email addresses were specified.
Source
File: bp-core/bp-core-wp-emails.php
function wp_notify_postauthor( $comment_id, $deprecated = null ) { if ( null !== $deprecated ) { _deprecated_argument( __FUNCTION__, '3.8.0' ); } $comment = get_comment( $comment_id ); if ( empty( $comment ) || empty( $comment->comment_post_ID ) ) return false; $post = get_post( $comment->comment_post_ID ); $author = get_userdata( $post->post_author ); // Who to notify? By default, just the post author, but others can be added. $emails = array(); if ( $author ) { $emails[] = $author->user_email; } /** * Filters the list of email addresses to receive a comment notification. * * By default, only post authors are notified of comments. This filter allows * others to be added. * * @since BuddyPress 3.7.0 * * @param array $emails An array of email addresses to receive a comment notification. * @param int $comment_id The comment ID. */ $emails = apply_filters( 'comment_notification_recipients', $emails, $comment->comment_ID ); $emails = array_filter( $emails ); // If there are no addresses to send the comment to, bail. if ( ! count( $emails ) ) { return false; } // Facilitate unsetting below without knowing the keys. $emails = array_flip( $emails ); /** * Filters whether to notify comment authors of their comments on their own posts. * * By default, comment authors aren't notified of their comments on their own * posts. This filter allows you to override that. * * @since BuddyPress 3.8.0 * * @param bool $notify Whether to notify the post author of their own comment. * Default false. * @param int $comment_id The comment ID. */ $notify_author = apply_filters( 'comment_notification_notify_author', false, $comment->comment_ID ); // The comment was left by the author if ( $author && ! $notify_author && $comment->user_id == $post->post_author ) { unset( $emails[ $author->user_email ] ); } // The author moderated a comment on their own post if ( $author && ! $notify_author && $post->post_author == get_current_user_id() ) { unset( $emails[ $author->user_email ] ); } // The post author is no longer a member of the blog if ( $author && ! $notify_author && ! user_can( $post->post_author, 'read_post', $post->ID ) ) { unset( $emails[ $author->user_email ] ); } // If there's no email to send the comment to, bail, otherwise flip array back around for use below if ( ! count( $emails ) ) { return false; } else { $emails = array_flip( $emails ); } $switched_locale = switch_to_locale( get_locale() ); $comment_author_domain = @gethostbyaddr($comment->comment_author_IP); // The blogname option is escaped with esc_html on the way into the database in sanitize_option // we want to reverse this for the plain text arena of emails. $blogname = wp_specialchars_decode(get_option('blogname'), ENT_QUOTES); $comment_content = wp_specialchars_decode( $comment->comment_content ); // Get customizer setting options $settings = bp_email_get_appearance_settings(); switch ( $comment->comment_type ) { case 'trackback': $title = __( 'added trackback on your post', 'buddyboss' ); $footer_message = sprintf( __('<a href="%s">Click here</a> to see all trackbacks on this post.', 'buddyboss' ), get_permalink( $comment->comment_post_ID ) . '#comments' ); $moderate_text = __('Moderate this trackback: ', 'buddyboss' ); /* translators: 1: blog name, 2: post title */ $subject = sprintf( __( '[%1$s] Trackback: "%2$s"', 'buddyboss' ), $blogname, $post->post_title ); break; case 'pingback': $title = __( 'added pingback on your post', 'buddyboss' ); $footer_message = sprintf( __('<a href="%s">Click here</a> to see all pingbacks on this post.', 'buddyboss' ), get_permalink( $comment->comment_post_ID ) . '#comments' ); $moderate_text = __('Moderate this pingback: ', 'buddyboss' ); /* translators: 1: blog name, 2: post title */ $subject = sprintf( __( '[%1$s] Pingback: "%2$s"', 'buddyboss' ), $blogname, $post->post_title ); break; default: // Comments $title = __( 'added comment on your post', 'buddyboss' ); $footer_message = sprintf( __('<a href="%s">Click here</a> to see all comments on this post.', 'buddyboss' ), get_permalink( $comment->comment_post_ID ) . '#comments' ); $moderate_text = __('Moderate this comment: ', 'buddyboss' ); /* translators: 1: blog name, 2: post title */ $subject = sprintf( __( '[%1$s] Comment: "%2$s"', 'buddyboss' ), $blogname, $post->post_title ); break; } ob_start(); ?> <p> <?php if ( !empty( $comment->user_id ) ) { ?> <a href="<?php echo esc_attr( bp_core_get_user_domain( $comment->user_id ) ); ?>"> <?php echo $comment->comment_author; ?> </a> <?php } else { echo $comment->comment_author; } ?> <?php echo $title; ?> <a href="<?php echo get_permalink($comment->comment_post_ID); ?>"><?php echo $post->post_title; ?></a> </p> <table cellspacing="0" cellpadding="0" border="0" width="100%"> <?php if ( !empty( $comment->user_id ) ) { ?> <tr> <td align="center"> <table cellpadding="0" cellspacing="0" border="0" width="100%"> <tbody> <tr> <td valign="middle" width="65px" style="vertical-align: middle;"> <a style="display: block; width: 47px;" href="<?php echo esc_attr( bp_core_get_user_domain( $comment->user_id ) ); ?>" target="_blank" rel="nofollow"> <?php $avatar_url = bp_core_fetch_avatar( array( 'item_id' => $comment->user_id, 'width' => 100, 'height' => 100, 'type' => 'full', 'html' => false, ) ); ?> <img src="<?php echo esc_attr( $avatar_url ); ?>" width="47" height="47" style="margin:0; padding:0; border:none; display:block; max-width: 47px; border-radius: 50%;" border="0"> </a> </td> <td width="88%" style="vertical-align: middle;"> <div style="color: <?php echo esc_attr( $settings['body_secondary_text_color'] ); ?>; font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; font-size: <?php echo esc_attr( $settings['body_text_size'] . 'px' ); ?>; line-height: <?php echo esc_attr( $settings['body_text_size'] . 'px' ); ?>; letter-spacing: -0.24px;"> <?php echo bp_core_get_user_displayname( $comment->user_id ); ?> </div> </td> </tr> </tbody> </table> </td> </tr> <tr> <td height="24px" style="font-size: 24px; line-height: 24px;"> </td> </tr> <?php } ?> <tr> <td> <table cellspacing="0" cellpadding="0" border="0" width="100%" style="background: <?php echo esc_attr( $settings['quote_bg'] ); ?>; border: 1px solid <?php echo esc_attr( $settings['body_border_color'] ); ?>; border-radius: 4px; border-collapse: separate !important"> <tbody> <tr> <td height="5px" style="font-size: 5px; line-height: 5px;"> </td> </tr> <tr> <td align="center"> <table cellpadding="0" cellspacing="0" border="0" width="88%" style="width: 88%;"> <tbody> <tr> <td> <div style="color: <?php echo esc_attr( $settings['body_text_color'] ); ?>; font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; font-size: <?php echo esc_attr( $settings['body_text_size'] . 'px' ); ?>; letter-spacing: -0.24px; line-height: <?php echo esc_attr( floor( $settings['body_text_size'] * 1.625 ) . 'px' ) ?>;"> <?php echo wpautop($comment_content); ?> </div> </td> </tr> </tbody> </table> </td> </tr> <tr> <td height="5px" style="font-size: 5px; line-height: 5px;"> </td> </tr> </tbody> </table> </td> </tr> <tr> <td height="24px" style="font-size: 24px; line-height: 24px;"> </td> </tr> <tr> <td> <a href="<?php echo get_comment_link( $comment ); ?>" target="_blank" rel="nofollow" style="font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; font-size: 14px; color: <?php echo $settings['highlight_color']; ?>; text-decoration: none; display: block; border: 1px solid <?php echo $settings['highlight_color']; ?>; border-radius: 100px; width: 84px; text-align: center; height: 32px; line-height: 32px;"><?php _e( 'Reply', 'buddyboss' ); ?></a> </td> </tr> <tr> <td> <div style="color: <?php echo esc_attr( $settings['body_text_color'] ); ?>; font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; font-size: <?php echo esc_attr( $settings['body_text_size'] . 'px' ); ?>; letter-spacing: -0.24px; line-height: <?php echo esc_attr( floor( $settings['body_text_size'] * 1.625 ) . 'px' ) ?>;"> <p><?php echo $footer_message; ?></p> <?php $approve_comment = sprintf( __( '<a href="%s">Approve</a>', 'buddyboss' ), admin_url( "comment.php?action=approve&c={$comment_id}#wpbody-content" ) ); $trash_comment = ''; $delete_comment = ''; $spam_comment = ''; if ( user_can( $post->post_author, 'edit_comment', $comment->comment_ID ) ) { if ( EMPTY_TRASH_DAYS ) { /* translators: Comment moderation. 1: Comment action URL */ $trash_comment = sprintf( __( '<a href="%s">Trash</a>', 'buddyboss' ), admin_url( "comment.php?action=trash&c={$comment_id}#wpbody-content" ) ); } else { /* translators: Comment moderation. 1: Comment action URL */ $delete_comment = sprintf( __( '<a href="%s">Delete</a>', 'buddyboss' ), admin_url( "comment.php?action=delete&c={$comment_id}#wpbody-content" ) ); } /* translators: Comment moderation. 1: Comment action URL */ $spam_comment = sprintf( __( '<a href="%s">Spam</a>', 'buddyboss' ), admin_url( "comment.php?action=spam&c={$comment_id}#wpbody-content" ) ); } ?> <p><?php echo $moderate_text; ?><?php echo $approve_comment; ?><?php if( !empty( $trash_comment ) ) { echo ', '.$trash_comment; } ?><?php if( !empty( $delete_comment ) ) { echo ', '.$delete_comment; } ?><?php if( !empty( $spam_comment ) ) { echo ', '.$spam_comment; } ?></p> </div> </td> </tr> </table> <?php $notify_message = ob_get_clean(); $wp_email = 'wordpress@' . preg_replace('#^www\.#', '', strtolower($_SERVER['SERVER_NAME'])); if ( '' == $comment->comment_author ) { $from = "From: \"$blogname\" <$wp_email>"; if ( '' != $comment->comment_author_email ) $reply_to = "Reply-To: $comment->comment_author_email"; } else { $from = "From: \"$comment->comment_author\" <$wp_email>"; if ( '' != $comment->comment_author_email ) $reply_to = "Reply-To: \"$comment->comment_author_email\" <$comment->comment_author_email>"; } $message_headers = "$from\n" . "Content-Type: text/plain; charset=\"" . get_option('blog_charset') . "\"\n"; if ( isset($reply_to) ) $message_headers .= $reply_to . "\n"; /** * Filters the comment notification email text. * * @since BuddyPress 1.5.2 * * @param string $notify_message The comment notification email text. * @param int $comment_id Comment ID. */ $notify_message = apply_filters( 'comment_notification_text', $notify_message, $comment->comment_ID ); /** * Filters the comment notification email subject. * * @since BuddyPress 1.5.2 * * @param string $subject The comment notification email subject. * @param int $comment_id Comment ID. */ $subject = apply_filters( 'comment_notification_subject', $subject, $comment->comment_ID ); /** * Filters the comment notification email headers. * * @since BuddyPress 1.5.2 * * @param string $message_headers Headers for the comment notification email. * @param int $comment_id Comment ID. */ $message_headers = apply_filters( 'comment_notification_headers', $message_headers, $comment->comment_ID ); add_filter( 'wp_mail_content_type', 'bp_email_set_content_type' ); foreach ( $emails as $email ) { $email_notify_message = bp_email_core_wp_get_template( $notify_message, get_user_by( 'email', $email ) ); @wp_mail( $email, wp_specialchars_decode( $subject ), $email_notify_message, $message_headers ); } remove_filter( 'wp_mail_content_type', 'bp_email_set_content_type' ); if ( $switched_locale ) { restore_previous_locale(); } return true; }
Changelog
Version | Description |
---|---|
BuddyPress 1.0.0 | Introduced. |
Questions?
We're always happy to help with code or other questions you might have! Search our developer docs, contact support, or connect with our sales team.