RSS Club for WordPress
What if I told you there was a secret social network, hidden in plain sight? If you’re reading this message, you’re now a member of RSS Club (https://daverupert.com/rss-club/)!
RSS Club is a series of posts which are only visible to RSS / Atom subscribers. Like you 😃
If you want this for your own WordPress site, here’s what you’ll need:
• A blog post which is only visible in RSS / Atom.
• Which has no HTML rendering on your site.
• And cannot be found in your site’s search.
• Nor via search engines.
• Also, doesn’t appear on your mailing list.
• Does not get shared or syndicated to the Fediverse.
(This is a bit more strict than the original rules (https://daverupert.com/2018/01/welcome-to-rss-club/) which allow for web rendering and being found via a search engine.)
Start With A Category (https://shkspr.mobi/blog/2026/04/rss-club-for-wordpress/#start-with-a-category)
The easiest way to do this in WordPress is via a category - not a tag.
After creating a category on your blog, click the edit link. You will see in the URl bar a tag_id.
Whenever you want to make an RSS-exclusive post, you select the category before you publish.
Disable Display (https://shkspr.mobi/blog/2026/04/rss-club-for-wordpress/#disable-display)
This code stops any page in the RSS Club category from being displayed on the web.
function rss_club_post_blocker(): void { if ( is_singular( “post” ) && has_category( “rss-club” ) && !current_user_can( “edit_posts” ) ) { status_header( 403 ); echo “You must be a member of RSS Club to view this content.”; exit; } } add_action( “template_redirect”, “rss_club_post_blocker” );
Editors can still see it, but everyone else gets a blocked message.
Remove From Site Search and SiteMap (https://shkspr.mobi/blog/2026/04/rss-club-for-wordpress/#remove-from-site-search-and-sitemap)
Here’s a snippet to stick in your functions.php - it removes the category from any queries unless it is for the admin pages or the RSS feeds.
// Remove the RSS Club category from search results. // $query is passed by reference function rss_club_search_filter( \WP_Query $query ): void { // Ignore admin screens. if ( !is_admin() && !is_feed() ) { // Find the RSS-Club category ID. $category = get_category_by_slug( “rss-club” );
// Remove it from the search results.
if ( $category ) {
\(query->set( "category__not_in", [\)category->term_id] );
}
}
} add_action( “pre_get_posts”, “rss_club_search_filter” );
This code also redacts that category from the build-in sitemap. Note - the name of the category still shows up in the XML, but it leads to a 404.
Exclude From Email and Social Media RSS Feeds (https://shkspr.mobi/blog/2026/04/rss-club-for-wordpress/#exclude-from-email-and-social-media-rss-feeds)
My mailing list and social media posts are fed from RSS. So how do remove an entire category from an RSS feed?
Simple! Append ?cat=-1234 to the end!
A negative category ID will remove the category from being displayed. So my email subscribers won’t see the RSS only content. Of course, they get email-only exclusive posts, so don’t feel too bad for them 😊
Fediverse Exclusion (https://shkspr.mobi/blog/2026/04/rss-club-for-wordpress/#fediverse-exclusion)
The manual way is easiest. Assuming you have the ActivityPub plugin (https://github.com/Automattic/wordpress-activitypub/) and a the Share On Mastodon plugin (https://github.com/janboddez/share-on-mastodon/), you can unselect the sharing options before publishing.
If you think you might forget to toggle those boxen, there is a filter for the share plugin (https://github.com/janboddez/share-on-mastodon/issues/31):
function rss_club_mastodon_filter( bool $is_enabled, int $post_id ): bool { global $exclude; if ( has_category( $exclude, $post_id ) ) { return false; } return $is_enabled; } add_filter( “share_on_mastodon_enabled”, “rss_club_mastodon_filter”, 10, 2 );
Similarly, there’s a filter for the ActivityPub plugin (https://github.com/Automattic/wordpress-activitypub/blob/730d0ae51ce77be28439969dd9788c745a46681f/includes/functions-post.php#L77):
function rss_club_activitypub_filter( bool $disabled, \WP_Post $post ): bool { global $exclude; if ( has_category( $exclude, $post ) ) { return true; }
return $disabled;
} add_filter( “activitypub_is_post_disabled”, “rss_club_activitypub_filter”, 10, 2 );
Enjoy! (https://shkspr.mobi/blog/2026/04/rss-club-for-wordpress/#enjoy)
If you’ve set up your own RSS Club feed, drop me a line (https://edent.tel/) so I can subscribe 😊
Write a comment