Exclude Status Posts From RSS Feed in WordPress

I added a notes feature to my blog using WordPress’ status post format.

At some point I might create a separate RSS feed for those posts, but for now I wanted to exclude them from the general RSS feed, to keep it somewhat clean, containing only proper blog posts.

This is how I implemented it:

function my_theme_exclude_status_posts_from_feed( $wp_query ) {
	if ( $wp_query->is_feed ) {
		$status_posts = get_posts( [
			'posts_per_page' => -1,
			'tax_query' => [
				[
					'taxonomy' => 'post_format',
					'terms' => [ 'post-format-status' ],
					'field' => 'slug',
					'operator' => 'IN',
				]
			],
			'fields' => 'ids'
		] );

		$wp_query->set( 'post__not_in', $status_posts );
	}

	return $wp_query;
}

add_filter( 'pre_get_posts', 'my_theme_exclude_status_posts_from_feed' );

Please let me know, if you know of a better/cleaner way to achieve this.


Update: After some input from Mark, I rewrote it, with one query less:

function my_theme_exclude_status_posts_from_feed( $wp_query ) {
	if ( $wp_query->is_feed ) {

		$filter = [
			'taxonomy' => 'post_format',
			'terms' => [ 'post-format-status' ],
			'field' => 'slug',
			'operator' => 'NOT IN',
		];

		$tax_query = $wp_query->get( 'tax_query' );

		if ( is_array( $tax_query ) ) {
			$tax_query[] = $filter;
		}
		else {
			$tax_query = [ $filter ];
		}
		
		$wp_query->set( 'tax_query', $tax_query );
	}

	return $wp_query;
}

add_filter( 'pre_get_posts', 'my_theme_exclude_status_posts_from_feed' );