Freshet Feeds
Freshet Feeds

Freshet Feeds

0/5 (0 ratings) — active installs Updated Aug 20, 2026
A feed rendered by your own theme — YouTube, RSS and Bluesky items normalized into one grid.

A feed rendered by your own theme — YouTube, RSS and Bluesky items normalized into one grid.

Freshet Feeds displays external feeds inside WordPress the way developers wish every feed plugin worked: your theme owns the markup. No vendor styling panels, no iframes, no third-party JavaScript on your pages.

Every provider — RSS/Atom, YouTube channels, Bluesky profiles — normalizes into one item model and renders through one template chain, overridable WooCommerce-style from your theme.

For developers

  • A loop API: freshet_feeds( 'my-feed' ) returns normalized item objects; freshet_feeds_render( 'my-feed' ) runs the full template chain.
  • Template overrides: copy item.php into {your-theme}/freshet-feeds/ and edit. An item hierarchy (item-{feed-slug}.php item-{provider}.php item.php) gives per-feed and per-type markup with clean fallbacks.
  • Custom layouts by convention: drop layout-carousel.php in your theme, pass carousel — no registration.
  • Hooks for everything: providers, template resolution, cache refresh events.

Performance & privacy by design

  • Rendering never blocks on a remote API (the only exception is a brand-new feed’s very first fetch): items are cached server-side, stale content is served instantly while a background refresh runs.
  • Feed images are stored locally in your uploads dir (some providers serve expiring signed image URLs — hotlinking them breaks).
  • Visitors’ browsers never contact the source platforms. Content lives in your DOM: real SEO, no consent baggage.

Providers

  • RSS / Atom — any feed URL; also covers Mastodon, subreddits, podcasts.
  • YouTube (channel) — keyless public channel feed, no API key required.
  • Bluesky (profile) — public API, no authentication.
  • Mock (fixture data) — bundled sample posts, no credentials and no network calls, for building and styling templates before a live connection exists. Hidden and blocked in production.

The plugin is fully functional with unlimited feeds. A separately distributed version with a managed source pipeline and direct support is available from freshet.studio. Full developer documentation: freshet.studio/docs.

External services

This plugin talks to external services only to fetch the feed content you configure:

  • YouTube feed (www.youtube.com/feeds) — only for configured YouTube feeds. Terms, Privacy.
  • Bluesky public API (public.api.bsky.app) — only for configured Bluesky feeds. Terms, Privacy.
  • Any RSS/Atom URL you configure is fetched from your server on your cache schedule.

All fetching happens server-side on your cache schedule; site visitors never contact these services.

Source code

The complete, unminified source — including the block editor JavaScript in blocks/ and the build setup — ships with the plugin and is maintained publicly at github.com/freshetstudio/freshet-feeds. The compiled bundle in build/ is generated from blocks/ by running npm install and npm run build (uses @wordpress/scripts).