Skip to:
Content
Pages
Categories
Search
Top
Bottom

Reply To: Notifications stopped working properly with the upgrade

@kineta

Participant

Here you go. I have this in my theme’s functions.php file. I posted this code a while ago, but there was a small mistake which is fixed here.

function jpr_buddypress_add_notification( $reply_id = 0, $topic_id = 0, $forum_id = 0, $anonymous_data = false, $author_id = 0, $is_edit = false, $reply_to = 0 ) {
	
		
		// this is who the notification goes to. whose post is replied to
		$topic_author_id = bbp_get_topic_author_id( $reply_to );

		// Bail if somehow this is hooked to an edit action
		if ( !empty( $is_edit ) ) {
			return;
		}

		// Get author information
		// $topic_author_id   = bp_loggedin_user_id();
		$secondary_item_id = $author_id;

		// Hierarchical replies
		if ( !empty( $reply_to ) ) {			
			$reply_to_item_id = bbp_get_topic_author_id( $reply_to );
			// if not replying to OP:
			$topic_id = $reply_to;
		}		

		
		// Get some reply information
		$args = array(
			'user_id'          => $topic_author_id,
			'item_id'          => $topic_id,
			'component_name'   => bbp_get_component_name(),
			'component_action' => 'bbp_new_reply',
			'date_notified'    => get_post( $reply_id )->post_date_gmt,
		);
	 	
		// Notify the topic author if not the current reply author
	 	if ( $author_id !== $topic_author_id ) {
			$args['secondary_item_id'] = $secondary_item_id ;

			bp_notifications_add_notification( $args );
	 	}
	 	// Notify the immediate reply author if not the current reply author
	 	if ( !empty( $reply_to ) && ( $author_id !== $reply_to_item_id ) ) {
			$args['secondary_item_id'] = $secondary_item_id;
			
			bp_notifications_add_notification( $args );
	 }
}
// remove the bbpress notification function so we don't get dupicate notifications
remove_action( 'bbp_new_reply', 'bbp_buddypress_add_notification', 10, 7 );
add_action( 'bbp_new_reply', 'jpr_buddypress_add_notification', 10, 7 );

// remove the bbpress format notification function before using our custom function
remove_filter( 'bp_notifications_get_notifications_for_user', 'bbp_format_buddypress_notifications', 10, 5 );

function jpr_format_buddypress_notifications( $action, $item_id, $secondary_item_id, $total_items, $format = 'string' ) {

	// New reply notifications
	if ( 'bbp_new_reply' === $action ) {
		$topic_id    = bbp_get_reply_id( $item_id );
		$topic_title = bbp_get_reply_title( $item_id );
		$topic_link  = wp_nonce_url( add_query_arg( array( 'action' => 'bbp_mark_read', 'topic_id' => $topic_id ), bbp_get_reply_url( $item_id ) ), 'bbp_mark_topic_' . $topic_id );
		$title_attr  = __( 'Topic Replies', 'bbpress' );

		if ( (int) $total_items > 1 ) {
			$text   = sprintf( __( 'You have %d new replies', 'bbpress' ), (int) $total_items );
			$filter = 'bbp_multiple_new_subscription_notification';
		} else {
			if ( !empty( $secondary_item_id ) ) {
				$text = sprintf( __( 'You have %d new reply to %2$s from %3$s', 'bbpress' ), (int) $total_items, $topic_title, bp_core_get_user_displayname( $secondary_item_id ) );
			} else {
				$text = sprintf( __( 'You have %d new reply to %s',             'bbpress' ), (int) $total_items, $topic_title );
			}
			$filter = 'bbp_single_new_subscription_notification';
		}

		// WordPress Toolbar
		if ( 'string' === $format ) {
			$return = apply_filters( $filter, '<a href="' . esc_url( $topic_link ) . '" title="' . esc_attr( $title_attr ) . '">' . esc_html( $text ) . '</a>', (int) $total_items, $text, $topic_link );
			
		// Deprecated BuddyBar
		} else {
			$return = apply_filters( $filter, array(
				'text' => $text,
				'link' => $topic_link
			), $topic_link, (int) $total_items, $text, $topic_title );
		}

		do_action( 'jpr_format_buddypress_notifications', $action, $item_id, $secondary_item_id, $total_items );

		return $return;
	}
}
add_filter( 'bp_notifications_get_notifications_for_user', 'jpr_format_buddypress_notifications', 10, 5 );

Skip to toolbar