For a long time, I have been using ugly hacks and workarounds in order to manage event dates in WordPress.
The easiest hack that comes to mind is to use the post publishing date. But this has some serious drawbacks:
- WP is not meant to display posts if the publishing date is in the future, unless you override some core settings. All in all, it’s not a very stable method, since you are fighting against the system.
- The publishing date picker forces you to enter year, month, day and time – you cannot leave any of those fields blank.
- You cannot define an end date.
In many situations, those limitations are a dealbreaker: when you manage event dates, you need the ability of displaying upcoming events. And if you got an event where you know only the month, or only the year, it’s very annoying when the date picker forces you to enter some random day / time information.
I tested quite a few event management plugins, and I found all of them both too detailed and too constraining. In most cases, events are treated as a pre-defined Custom Post Type, which is limiting: you are constrained in the way you connect that custom post type with your categories, tags, taxonomies, you cannot easily attach files, integrate it with other plugins, etc.
Finally, I came up with my list of must-have features:
- It must be possible to attach dates to any object: post, page, custom post type…
- It must be possible to define only the year – month, day and time must be optional.
- Dates should be stored as custom fields, so the theme author can retrieve them with standard WP methods.
- Dates should be stored in a classic 2012-01-31 machine-readable format, which has a double benefit:
- We can use them to filter events — from 2012-01-00 to 2012-12-31, for instance).
- We can use php to display the dates in many different ways, in any language.
- The date picker should use the same UI design as the publishing date picker, for perfect consistency.
Spec -> Plugin
Having that concept in mind, I wrote a detailed spec, and started to search for a developer…
And a few weeks later, I had a some working code: the Minimalistic Event Manager plugin, now available on WordPress.org.
The core of the plugin was written by Dan Stefancu (with some guidance by Vlad Socaciu), a skilled Romanian developer working for DreamProduction.net.