What people report
“Stuck on July 2026.” “The calendar freezes on January 2027.” “Shows past events, not future ones.” The site is live, the plugin is active, the calendar renders — and it is showing a window that stopped moving, often on a date that has not arrived yet.
The mechanism
It is a chain, and every link is reasonable on its own.
The plugin fetches events from a source, and it needs a window — a start and an end — to fetch. The start is configurable, and among the options is a fixed date. Somebody sets that once, sensibly, at setup. The window's start now never moves again.
The window's end is then computed from something like “the latest event we fetched”. Which is derived from what the frozen window returned. The window is now defined in terms of itself, and it has stopped advancing.
Then the result is cached, often without an expiry, so the frozen answer becomes the stored truth. The calendar is not broken; it is faithfully reporting a window that stopped moving on the day it was configured.
How to confirm it
Look for a setting resembling “calendar start” or “fetch from” with a specific date in it, rather than a rolling value like “today”. If it is a fixed date, that is your cause.
Then clear the plugin's cache or transients and reload. If the calendar jumps forward briefly and then sticks again, it is confirmed — the fetch is being recomputed and landing in the same place.
The immediate fix
Change the start to a rolling value and clear the cache. If there is no rolling option, you are down to editing the fixed date periodically, which is a maintenance task nobody will remember to do. That is worth knowing about your plugin.
How it should be built
The fetch window is always relative to now — “from today, out to a horizon”. There is no setting that can pin its start. The horizon is a configured length of time, not something derived from the data that came back. Caches always have an expiry, so a wrong answer decays instead of hardening into a fact.
And the calendar says so. If the newest event it has is older than its horizon, that is information the site owner needs, shown in the admin as “last synced successfully on this date; last error was this”.
Why the last point is the whole thing
A calendar that has stopped updating looks exactly like a calendar with no events coming up. Nobody investigates a quiet fortnight. That is why these threads always begin months after the freeze, usually after a customer asks why the website says nothing is on — which is the most expensive possible way to find out.