DEV Community

Jeffrey Inman
Jeffrey Inman

Posted on

All-in-One Event Calendar is gone from wordpress.org: getting your events out

Timely closed All-in-One Event Calendar on wordpress.org in August 2025, at their own request. Sites that still run it get no more updates from there. The last release still bundles an iCal library that calls create_function(), which PHP 8 removed, and on a fresh install version 3 gives you Timely's hosted calendar instead of the local one.

Your events never left your database, though. Here's what's in there and what goes wrong when you move it, whichever calendar you pick next.

Disclosure: I build Beacon Events, a free calendar plugin, and this week I wrote an importer for this data. Everything below applies to any migration.

What's in your database

Each event is a post of type ai1ec_event. The dates and the rest live in a table of their own, wp_ai1ec_events, one row per event:

  • start and end are Unix timestamps in UTC. timezone_name says which zone the event was entered in, and sys.default means the site's zone.
  • recurrence_rules holds an iCalendar RRULE. Rules written by its editor look like FREQ=WEEKLY;WKST=MO;BYday=TU,TH; with a lower-case "day", and end dates come out as UNTIL=20261231T235959Z.
  • exception_dates is a comma-separated list of skipped dates. exception_rules can hold a whole rule of excluded dates.
  • Venue, address, city, contact, cost and ticket link are plain columns, except cost, which is a serialized PHP array.
  • Events pulled in from a calendar feed carry ical_feed_url and the feed's own ical_uid. Moved single dates get that UID with a prefix.

Categories and tags are the events_categories and events_tags taxonomies, and category colours sit in wp_ai1ec_event_category_meta. Expanded dates are cached in wp_ai1ec_event_instances, which you can ignore because it's rebuilt from the rules.

Where migrations go wrong

  • The calendar page goes blank. It drew the calendar into an empty page you picked in its settings, with no shortcode or block in the content. Once the plugin is off, that page shows nothing, so put your new calendar on it.
  • Times shift by hours. The timestamps are UTC. Convert them in the event's own zone, not the server's, or an evening class starts at midnight.
  • Rule end dates drift by a day. UNTIL is a moment in UTC, not a date. In a zone ahead of UTC, 20261115T235959Z is already November 16, so read it as the last date whose start still comes before that moment.
  • Feed events get duplicated. If you import them and then subscribe to the same feed again, you get two copies unless the importer keeps the feed's UIDs.
  • Exclusion rules disappear. Few calendars understand EXRULE at all. "Every day except weekends" only survives if it becomes a weekly rule on the remaining days.
  • Old links 404. Calendar views live at URLs like /calendar/action~month/… and categories at /events_categories/your-category/. Search engines and bookmarks still have those.

Where to go

  • Open Source Event Calendar is a GPL fork of All-in-One Event Calendar by digitaldonkey and looks the most like it. Its readme says the database isn't fully compatible with All-in-One Event Calendar 2.3.4 and that moving existing events may take manual work.
  • Timely's hosted calendar is their own service, embedded into your site.
  • Beacon Events is the one I build. It reads the tables above directly, with the old plugin active or already switched off.

A checklist that holds up

  1. Back up the database.
  2. Install the new calendar and run its import while All-in-One Event Calendar is still active. Don't delete anything yet.
  3. Spot-check a recurring event, an all-day event and one that came from a feed.
  4. Deactivate the old plugin, put the calendar on the old calendar page, and click a few old links.

If you want to try Beacon Events

It's free on wordpress.org. Events → Import / Export shows what it found and imports it in one click: rules and skipped dates, category colours, venues, contacts, images and feed UIDs. The old category, calendar-view and event links redirect once the old plugin is gone, and the report names the page that used to show the calendar. Recurring events are free, and so is Google Calendar or ICS sync.

Demo site: https://store-safety.duckdns.org/demo/

https://wordpress.org/plugins/beacon-events/

If your old calendar has something this doesn't cover, tell me in the comments.

Top comments (0)

Some comments may only be visible to logged-in visitors. Sign in to view all comments.