Question one: can it express your actual schedule?

Almost every calendar plugin handles “every Tuesday”. The pattern that separates them is the one most venues actually run: the second Tuesday of the month, the last Friday, the first weekend after the term starts. Rules with an ordinal in them are where the category falls apart — and it usually falls apart silently, expanding “the 2nd Tuesday” as “the 8th of every month” and putting confidently wrong dates on your page.

The expander above is the engine from this plugin. Use it as a test sheet: work out what your dates should be, then check them against whatever calendar you are considering. If the two disagree, you have learned something expensive for free.

Question two: what does it do to your database?

There are two ways to store a repeating event. One is to write a rule and work out the dates when a page is drawn. The other is to create a real database row for every single occurrence, in advance, usually on a schedule.

The second approach is easier to build and much worse to live with. A weekly class over two years becomes 104 entries. They appear in your search results, in your sitemap, in every other plugin's queries, in your Posts count, and in your backups. When you edit the series, something has to reconcile them all. This is the origin of the strangest bug in the category — occurrence permalinks that grow longer with every repeat until they hit the database's limit — and it is a direct consequence of materialising what should have stayed a rule.

Question three: what happens when it stops being maintained?

A calendar is not a static thing. The timezone database is revised twice a year, and countries change their own daylight-saving rules by law at short notice. Google and Microsoft revise their calendar exports. PHP and WordPress deprecate what the code stands on.

A plugin that stops being maintained does not announce it. It keeps rendering, and what it renders slowly stops being true — most often as a calendar frozen on some date in the future, still showing a page that looks fine. Before you commit, look at the plugin's directory listing: when was it last updated, what version of WordPress is it tested against, and how many support threads are sitting there unanswered. Those three numbers tell you more than the feature list does.

What this one does

The free plugin covers events, categories, month and list views, a block and a shortcode, an outgoing iCal feed, per-event timezones, and the full recurrence set — including the ordinal rules above, single-occurrence cancellations, and moved occurrences. It creates no database table and does no work on pages the calendar is not on. Pro adds incoming sync from Google Calendar, Outlook, iCloud and any other .ics feed.