
Write several versions of a section once, and let the page show a different one over time.
A testimonial that changes every week. A hero message that rotates each month. A call to action
that differs every day. You write the variations in the block editor, choose how often they
change, and the page takes it from there.
How it works
Add a Cycle block, then add a variation inside it for each version you want. Anything can go
in a variation — headings, images, buttons, columns, other blocks. Pick an interval, and that is
the whole setup.
- Daily, weekly or monthly rotation.
- Shuffle, so a full pass shows every variation before any repeats.
- Sequence, if you want them in the order you wrote them.
- Repeat, or stop on the last variation once the cycle has run through.
- Preview from the editor, stepping through every variation without waiting for the schedule
and without disturbing what visitors see. - Unlimited variations per block, and as many blocks as you like per page.
Rendered on the server, which matters more than it sounds
The variation is chosen before the page is sent to the browser. Only one is ever in the HTML.
- No flicker and no layout shift. Nothing swaps after the page has painted, so the block
never causes the jump that hurts Core Web Vitals. - No hidden duplicate content. Search engines see one variation, not all of them stacked in
the markup with the rest hidden by CSS. - No JavaScript required to choose or display a variation.
- Nothing is written into your post content, so your saved posts do not change as the
schedule advances.
Built to behave
- Every variation is real block content, so it inherits your theme’s colours, typography and
spacing rather than fighting them. - The schedule is tracked per block and per post, so duplicating a page gives the copy its own
schedule instead of sharing one. - If anything goes wrong — a missing schedule, a plugin conflict — the block falls back to
showing its content rather than breaking the page. - Built to WCAG 2.2 AA and fully translatable.
External services
This plugin contacts GhostLabs’ licensing service in exactly one situation: when you start the
upgrade to Cycle Block Pro from the settings screen — by submitting a license key, or by clicking
“Complete upgrade” after a purchase. It sends the license key you entered (or the one-time claim
token from your purchase), this site’s domain name, the plugin’s slug and the edition being
requested, so the service can verify the license and deliver the Cycle Block Pro package. Nothing is sent on any other page
load, and nothing is ever sent without that explicit action.
The service is operated by GhostLabs. Terms of service ·
Privacy policy
Source code
The plugin’s compiled JavaScript is built from readable sources, and both are published
together at:
https://github.com/theghostlab/wp-ghostlabs-cycle-block-lite
That repository contains this plugin exactly as distributed, plus the uncompiled src/ and
dev/ behind its bundles and the configuration used to build them. Every dependency is a
public package, and the one GhostLabs library the plugin uses is carried as readable source
inside it (lib/wp-kit/, GPL-2.0-or-later) — so composer install && pnpm install && pnpm run needs no credentials of any kind and reproduces the shipped
buildbuild/, assets/js/ and
assets/css/settings.css byte for byte.
Screenshots

Three versions of one hero, written once and named. Pick the schedule — daily, weekly or monthly — choose shuffle or sequence, repeat or stop on the last one, and preview every variation from the editor without waiting for the clock.

A variation is ordinary block content — a Cover, headings, buttons, columns, anything — so it inherits your theme. The Custom Events panel shows what Pro adds: a view event, and an optional click event, for every event you define, sent to Google Analytics 4, Matomo, Plausible or Umami.

Chosen on the server before the page is sent. One variation is in the HTML, so there is no flicker, no layout shift, and no hidden duplicate content for search engines to find.

Nine schedules in the list; this edition honours three. Pick a Pro one and the block says so, names the schedule it is still cycling on, and changes nothing.

Settings → Cycle Block: where your controls live, the license entry, and what Pro adds beside what you already have.

Upgrade in place on a single-site install. Paste a license key and the site switches to Pro with every block, schedule and setting exactly as it was.