Event Organiser


Event Organiser adds event management that integrates well with your WordPress site. By using WordPress’ in-built ‘custom post type’, this plug-in allows you to create events that have the same functionality as posts, while adding further features that allow you to manage your events. This includes the possibility of repeating your event according to complex schedules and assign your events to venues. This can all be done through an intuitive user interface, which allows you to view your events in the familiar WordPress list or in a calendar page in the admin area.

User Docs
| Function Reference
| Forums
| Demo
| Booking Add-on

Available Extensions

A full list of available extensions can be found here.


For the user

  • Create one-time events or recurring events.
  • Allows complex recurring patterns for events. You can create events that last an arbitrary time, and repeat over a specified period. Supports complex schedules such as On the third Tuesday of every fourth month or Every month on the 16th.
  • Ability to add or remove specific dates to an event
  • Event functions available which extend the post functions (e.g. the_title(),get_the_author(), the_author()) to output or return event data (the start date-time, the venue etc). For examples of their use see the documentation or the included template files.
  • Create and maintain venues for your events, with Google maps support and a fully-featured content editor.
  • Widgets:
    • Calendar widget – displays a calendar (identical to the standard WordPress Calendar)
    • Event List widget – displays a list of events, with options to specify the number of events, restrict by categories or venues etc.
    • Event Agenda widget
  • Year, month and day archive pages
  • Shortcodes:
    • (full)Calendar, includes optional category & venue filters.
    • (widget) Calendar
    • Event List (similar to Event List widget)
    • Event Agenda (similar to Event Agenda widget)
    • Venue map
    • Subscribe to event feeds
  • Relative date queries (for example, query events that finished in the last 24 hours, or events starting in the coming week).
  • Assign events to categories and tags, and view events by category or tag.
  • Colour-coded event categories.
  • Custom permissions allow to specifiy which roles have the ability to create, edit and delete events or manage venues.
  • Venue pages, to view events by venue.
  • Export/import events to and from ICAL files.
  • Delete individual occurrences of events.
  • Public events feed: allow visitors to subscribe to your events, or a particular venue / category.
  • Supports ‘pretty permalinks’ for event pages, event archives, event category and venue pages.
  • (Optionally) automatically delete expired events.

For the developer

  • Adds an event custom post type that fits naturally into WordPress and allows for all the functionality of ‘posts’.
  • Respects the template hierarchy. Default templates can be over-ridden by including the appropriately named template files in your theme folder.
  • Plug-in actions and filters are provided to modify the behaviour of the plug-in (hook reference
  • Extensive function API & documentation
  • Javascript actions and filters to modify interaction with the calendars and maps
  • Provide custom templates for shortcodes, widgets and ICAL export
  • Custom metaboxes and meta data support for venues (see tutorial).
  • Minified javascript files are used, with the originals provided for ease of developing
  • Booking add-on available


A big thank you to those who have provided translations for Event Organiser. If you wish to help out with translating the plug-in, you can do so here.

  • Arabic – Layla, Mohamed Nazir
  • Bulgarian – Parvan Voynov
  • Catalan – jordioniric, marc.antje
  • Chinese – sdsunqian
  • Czech – Jan Kupsa
  • Croatian – Branimir
  • Danish – Intox Studio, Malthe, Morten Lyng
  • Dutch – Ingrid Ekkers, Roel
  • English (Canada) – GhostToast
  • Estonian – Kristjan Roosipuu
  • Finnish – Kari Tolonen, Juhani Marttila
  • French – Remy Perona, Arnaud
  • German – Martin Grether & Henning Matthaei
  • Greek – Vasilis, Panagiotis
  • Hebrew (Israel) – heli
  • Hungarian – Csaba Erdei
  • Icelandic – HrHagedorn
  • Indonesian – Daniel Tampubolon
  • Italian – Emilio Frusciante, Pio Muto, Daniele Piccoli
  • Japanese – ogawa, tkj, takeshi terai, haya.
  • Latvian – Kristaps
  • Lithuaniun – Stephan Siegi
  • Macedonian – Aleksandar
  • Norwegian – Erlend Birkedal
  • Norweign (Bokmål) – DagC
  • Persian (Iran, Islamic Republic of) –
  • Polish – Bartosz Arendt
  • Portuguese (Brazil) – Rafael Wahasugui, rafaelkvidal
  • Portuguese (Portugal) – Emanuel Teixeira
  • Romanian – raduanastasedev
  • Russian – Sergei
  • Slovak – ViRPo
  • Slovenian – Matej
  • Spanish (Spain)- Joseba Sanchez, jagarre, jelena kovacevic, courtesy of WebHostingHub
  • Spanish (Peru) – Pedro Valverde
  • Swedish – Sofia BrÃ¥vander, Urban Norlander
  • Thai – Nibhon, Wuttichai Songprapai
  • Turkish – Gökhan DAMGACI
  • Ukranian – Максим Кобєлєв


  • Event admin screen
  • Venue admin screen
  • Event details metabox, showing the full reoccurrence options and venue selection
  • Venue editing screen, with Google Maps
  • Calendar View screen
  • Calendar shortcode (using TwentyThirteen)
  • Calendar shortcode when viewed on a mobile device (using TwentyFourteen)
  • Events list (using TwentySixteen)


Installation is standard and straight forward.

  1. Upload event-organiser folder (and all it’s contents!) to the /wp-content/plugins/ directory
  2. Activate the plugin through the ‘Plugins’ menu in WordPress
  3. Check Settings > Event Organiser


How to create an event

Events behave very similarly to standard posts. To create a event, select the ‘Add New’ submenu from ‘Events’ menu. The chief difference between events and post is the ‘Event Details’ metabox which sets the date and venue data related to the event.

You can also add events in the Calendar view in a manner similiar to Google Calendar. By selecting one (or multiple) days (in month mode) or times (in week/day mode) you can create an event that spans the selected period.

The Event Pages Don’t Look Right

Unfortunately its impossible for the default templates to work with every theme. Occasionally, they simply don’t work well with a given theme – the event content might not appear right, or the sidebar might seem displaced. The solution is to edit the default templates to fit in with your theme (you can use your theme’s own templates as a guideline). You can find more information here

How do I display events?

Events are automatically displayed on the events page: try www.your-wordpress-site.com/?post_type=event (If you have permalinks enabled these will have ‘prettier’ versions). Similarly there are venue and event category pages. Each of these pages have their own associated template which are present in the template sub-directory of the Event Organiser plug-in folder. To override the default templates, simply create the appropriately named files in your theme directory.

The plug-in also provides the following widgets (see widget documentation):

  • Event list – list events allows with options to filter by venue, categories and dates.
  • Calendar – display a calendar, similiar to the WordPress calendar, that displays your events.
  • Agenda – displays your events in a list grouped by date and navigated with AJAX.

Among others, the plug-in also provides the following shortcodes (see shortcode documentation):

  • Event list & Widget Calendar – shortcode versions of their widget counterparts.
  • Full calendar – a calendar, similiar to the admin calendar, with optional month, week and day views and category and venue filters

Template Functions
Finally, the plug-in provides a function eo_get_events() which is similiar to WordPress’ get_posts(). It returns an array of post objects (where the posts are events), and this can be used to display events through editing your theme. The usual WordPress functions for display associated information (author, title etc) are still available to you, and the plug-in provides a similar set of functions to display event related data (dates, venues etc). See the documentation for more information.

The full calendar doesn’t display any events

The calendar should display all published events. If you find the calendar doesn’t appear this is usually caused by the theme you are using, and is verifiable by temporarily switching to the TwentyEleven theme. If the theme is the cause this is normally because:

  • The theme de-registers the jQuery / jQuery UI shipped with WordPress and registers an outdated version
  • The theme does not call wp_footer in the footer

If the calendar does appear, but gets stuck loading, the cause is usually the AJAX response. If your site is in ‘debug’ mode – this can be due to error messages from other plug-ins being printed. You can view the AJAX response in your browsers console (E.g. Firefox’s firebug or Chrome’s dev tools). If you are still unable to determine the cause of the problem, or how to fix, please use the plug-in forums with a link to your site and I’ll take a look.

I cannot navigate between months on the widget calendar

If clicking on the ‘next’ month causes the page to reload – the javascript has not been loaded. This is usually because the theme does not call wp_footer in the footer.

If the calendar simply does not respond this is usually because your theme does not allow widgets to add their own ID and classes. Somewhere in the theme folder your theme will make use of register_sidebar() (probably in functions.php. It should look something like:

  'name' => __( 'Side bar name' ),
  'id' => 'sidebar-id',
  'description' => __( 'Widget area description' ),
  'before_title' => '<h1>',
  'after_title' => '</h1>',
  'before_widget' => '<div id="%1$s" class="widget %2$s">',
  'after_widget' => '</div>',

Notice the %1$s and %2$s in the before_widget argument. These allow the widget to add their own ID and classes to the widget. If your theme does not use class="widget %2$s" (they should!) the month navigation for the widget calendar will not work.

If you are still unable to determine the cause of the problem, or how to fix, please use the plug-in forums with a link to your site and I’ll take a look.

What ShortCodes are available?

Event Organiser provides the following shortcodes:

  • [eo_events] – displays a list of events allows with options to filter by venue, categories and dates.
  • [eo_calendar] – displays a widget-calendar of your events, similiar to WordPress’ calendar, and navigated with AJAX.
  • [eo_fullcalendar] – displays a calendar, similiar to the admin calendar, with optional month, week and day views and category and venue filters.
  • [eo_venue_map] – displays a Google map of the current venue, or of a particular venue given as an attribute.
  • [eo_subscribe] – wraps the content in a link which allows visitors to subscribe to your events; there are two types: ‘Google’ and ‘Webcal’.

More information on shortcodes is available here


December 22, 2021
I need just a basic calendar, so I can add events (color coded by category) that people can just see. Very simple needs. This product does that for free. Easy to set up, so far it has been working just fine. It let me import my events from an ICS file, which was helpful, as that is how I was able to get my data from the plugin that I was using, which used to be free but now charges a fee. Only hassle was that all events came in as drafts, so I had to republish them. Not a big deal, other than that I had a LOT of events
June 2, 2021
So far loving it! Just digging in and seeing that we now have a calendar system that allows advanced recurring events (even in the free version). WordPress template theming. No bloat. no jQuery. Looks like it will be easy to add ACF, costume taxonomies, etc... Finally! Why did it take me so long to find this plugin? Thought I tried all of them. Was just about to give up and build out a calendar from scratch. Thanks!
August 1, 2020
If you ever happen to pay for any of its "pro" features, you will be stuck with an incomplete buggy mess of a code after the first year expires and have to pay once again if you want updates that fixes their bugs. There hasn't been a single answer to bugreports on these forums for ages. Avoid!
December 5, 2019
Pros This is a great plugin for developers that want to make use of the template files. This is a great plugin if you're using advanced custom fields plugin and want to add additional custom fields for events, to incorporate into your event templates. This is a great plugin if you are using elementor, and want to insert event widgets around your site and templates. You can customize which fields are displayed in the widget settings, or edit the template file. Developer friendly: you can import the event templates into your child theme and make customizations very easily. Nothing is locked down or hidden. I can get my content to display exactly as I want. Great documentation: all of the event functions are very well documented, with easy copy / paste snippets for your template file customizations. Cons Can't think of any! It works really well for me. Much more developer and customization friendly than the more "popular" event plugins
Read all 137 reviews

Contributors & Developers

“Event Organiser” is open source software. The following people have contributed to this plugin.


“Event Organiser” has been translated into 17 locales. Thank you to the translators for their contributions.

Translate “Event Organiser” into your language.

Interested in development?

Browse the code, check out the SVN repository, or subscribe to the development log by RSS.


= 3.12.5 – 24th February 2024
* Security patch: Disables cache of public calendars (can be re-enabled with the following code)

add_filter('eventorganiser_cache_expiration_eo_widget_calendar', function(){
  return DAY_IN_SECONDS;

add_filter('eventorganiser_cache_expiration_eo_widget_agenda', function(){
    return DAY_IN_SECONDS;

add_filter('eventorganiser_cache_expiration_eo_full_calendar_public', function(){
    return DAY_IN_SECONDS;

3.12.4 – 2nd October 2023

  • fix: php 8.2 warnings

3.12.3 – 11th March 2023

  • fix: integer overflow bug with theme compatbility template handling

3.12.2 – 15th November 2022

  • fix: bug with admin calendar not rendering correctly in WordPress 6.1

3.12.1 – 28th September 2022

  • fix: static method called dynamically

3.12.0 – 30th March 2022

  • feat: Add %event_organiser_url% placeholder for event list shortcode (url of the event’s organiser)

3.11.1 – 30th March 2022

  • bugfix: Fix “InvalidValueError: setIcon: not a string…” error with Google Maps

3.11.0 – 10th March 2022

  • bugfix: Add support for PHP 8+

3.10.8 – 13th October 2021

  • bugfix: Close open tooltip windows when opening tooltip..

3.10.7 – 11th June 2021

  • bugfix: Fixed bug with license keys not saving on multisite installations.

3.10.6 – 17th May 2021

  • bugfix: Fix bug with Open Street Map & selecting ‘no venue’

3.10.5 – 7th March 2021

  • bugfix: Replace deprecated jQuery methods

3.10.4 – 19th January 2021

  • bugfix: Fixed week/day calendar views broken in WP 5.6
  • bugfix: Fixed some jquery-migrate deprecation notices

3.10.3 – 15th January 2021

  • bugfix: Fixed jQuery errors with WordPress 5.6
  • bugfix: Fixed styling regressions

3.10.2 – 13th September 2020

  • bugfix: Fixed all-day toggle not working with WordPress 5.5

3.10.1 – 14th August 2020

  • bugfix: Fixed iCal feeds being treated as comment feeds

3.10.0 – 22nd July 2020

  • feature: Extended support for RECURRENCE-ID in iCal calendards
  • bugfix: Ensure translated screen help text is escaped
  • bugfix: Replace instances of curly braces for array access (deprecated PHP 7).

3.9.1 – 28th May 2020

  • bugfix: Fixed bug where venue can’t be changed if maps are disabled
  • feature: Added additonal methods to the maps adapter API

3.9.0 – 8th January 2020

  • feature: Added option to disable venue maps
  • bugfix: Ensure latitude/longtitude co-ordinates are cast as floats

3.8.6 – 18th November 2019

  • bugfix: Removed call to is_feed(), uses $query->is_feed() instead. Fixes potential warning logged

3.8.5 – 7th November 2019

  • bugfix: Fixed missing Leaflet files for openstreetmap

3.8.4 – 5th November 2019

  • bugfix: Fixed inline editing event looses venue selection

3.8.3 – 31st August 2019

  • bugfix: Fixed ‘Feed not found’ when importing a feed with a Byte Order Mark.

3.8.2 – 6th August 2019

  • bugfix: Restored PHP 5.2 compatability

3.8.1 – 26th July 2019

  • Bumped tested up-to version
  • bugfix: Fixed bug where leaflet map appeared above datepicker in the event edit screen

3.8.0 – 15th July 2019

  • feature: Added eventorganiser_ical_location filter
  • feature: Added eventorganiser_ical_summary filter
  • bugfix: Fixed max zoom for leaflet
  • bugfix: Fixed recurrence notice being removed by ‘hide admin notices’ plugin
  • bugfix: Fixed bug where [eo_fullcalendar] shortcode would not display terms in the dropdown filter if they were surrounded by space, e.g. [eo_fullcalendar event_category="foo, bar"]

3.7.6 – 6th March 2019

  • bugfix: Fixed missing translations
  • bugfix: Fix tags and categories not appearing in Gutenberg

3.7.5 – 1st March 2019

  • feature: Added eventorganiser_pre_insert_venue filter
  • bugfix: Use case-sensitive constants for PHP 7.3 #454
  • bugfix: Fix issue if event categories are invalid #455
  • bugfix: Fix user_events option for calendar not working
  • bugfix: Ensure table names are reigstered before removing tables. Fixes #444
  • bugfix: Fix warning for PHP 7+ where string is passed, not integer
  • bugfix: Fix typo

3.7.4 – 26th August 2018

  • bugfix: Fix bug with venue map shortcode when used without attributes

3.7.3 – 13th July 2018

  • bugfix: Fix Google Maps API key notice appearing when Open Street Maps is selected
  • bugfix: Corrected spelling error in venue arguments (“longtitude” corrected to “longitude”)

3.7.2 – 8th June 2018

  • bugfix: Fixed maps bug which affected users with Yoast’s SEO Plugin installed
  • bugfix: Replaced data-vocabulary.org with schema.org
  • bugfix: Fixed higher-priority template being overridden by lower priority template in
    eo_locate_template() when multiple template names are given. See #434

3.7.1 – 31st May 2018

  • bugfix: fixed admin calendar modal appearing behind overlay
  • bugfix: fixed venues with apostrophes not appearing in the venue search/autocomplete.

3.7.0 – 25th May 2018

  • Added support for OpenStreetMap. New installations default to OpenStreetMap.

3.6.5 3rd April 2018

  • bugfix: Only use date ordinal suffix (st,nd,rd,th) if the site’s date format setting includes it

= 3.6.4 26th March 2018

  • bugfix: Addressed issue where grouping occurrences might error depending on MySQL configuration. Fixes #432

= 3.6.3 6th March 2018

  • bugfix: Fixed bug with grouping occurrences, effecting some MySQL versions. Fixes #430

= 3.6.2 5th January 2018

  • bugfix: Fixed reference error in calendar shortcode introduced in 3.6.1

= 3.6.1 4th January 2018

  • bugfix: Bug where static value is used for calendar breakpoint on initial load
  • bugfix: Ensure venue tooltip is moved to fit within viewport
  • bugfix: Bug where clicking on the venue tooltip could cause the map to overflow the container

= 3.6.0 25th November 2017

  • added: Ability to specify multiple event authors (organiser) in the fullcalendar author/author_name attribute
    by using a comma seperate lised e.g: [eo_fullcalendar author=”1,2″]
  • bugfix: The “organiser” full calendar filter only displays users included in the author/author_name attribute
    if supplied.
  • bugfix: Occurrences which have changed time still appear in the include/excludes datepicker
  • bugfix: iCal feed will display correct DSTART & DTEND values even when the initial occurrence is excluded from
    the query driving the feed.
  • changed: The admin calendar week/day views display 15-minute intervals. If dragging of occurrences is enabled
    this can be done in 5 minute intervals.

= 3.5.1 14th November 2017

  • Fix bug where multiple filters are used in fullcalendar shortcode, seperated by a comma

= 3.5.0 8th November 2017

  • Added ‘organiser’ option to calendar shortcode’s headerLeft/headerCenter/headerRight attributes – allows
    filting of the event calendar by event organiser (author).
  • Improved effeciency of calendar page load time by lazy loading required data
  • Updated French and Dutch translations
  • Tested up to 4.9.0-beta-4

= 3.4.1 18th October 2017

  • Tested up to 4.9.0-beta-2
  • Fixed a bug with the calculation of long occurrences
  • Updated Czech translation

= 3.4.0 25th September 2017

  • Tested up to 4.8.2
  • added: weeknumbers attribute for the calendar shortcode: [eo_fullcalendar weeknumbers=true]

= 3.3.0 12th September 2017

  • added: %event_range{date-format}{time-format}% placeholder for the event list shortcode / widget
  • added: %event_organiser% placeholder for the event list shortcode / widget
  • added: eventorganiser_google_maps_url hook
  • updated: Spanish, Finish and Italian translations
  • bugfix: private events authored by the current user are now visible in the admin calendar
  • bugfix: Fix casing in ‘All events’
  • bugfix: Fix bug in event list widget settings: group_occurrences checkbox is not checked, even when enabled.

= 3.2.0 23rd August 2017
* Updated ‘Tested up to’ version (WordPress 4.8.1)
* Update Czech, Indonesian, French, Japanese, Dutch, Portuguese,
Norwegian, Slovenian and Swedish.
* Default event page names are now filterable via eventorganiser_event_properties.
* Remove X-WR-CALNAME from iCal feed for single event feeds. See #413.
* Fixes errors if event-category tax is disabled. See #414
* Fixes mark-up error in calendar widget: tbody must occur before tfoot

= 3.1.10 – 8th July 2017
* Updated ‘Tested up to’ version (WordPress 4.8)
* Updated Afrikaan, Catalan, Croatian, Czech, Dutch, French, German, Greek,
Hungarian, Portuguese, Russian, Slovenian, Spanish and Turkish translations.

= 3.1.9 – 31st March 2017
* Removed development tool
* Updated French, Italian and Japanese translations

= 3.1.8 – 30th March 2017

  • Handle 767 byte index size limit in MySQL. See #404
  • Fix handling of ampersands in the iCal feed

= 3.1.7 – 23rd December 2016
* bugfix: Remove icon was not visible when editing galleries on the event admin page

= 3.1.6 – 11th November 2016
* Fix bug causing edit event admin page to link to the settings page.
* Fix bug in eo_get_current_occurrence_of()
* Ensure occurrence_id value returned by eo_get_next_occurrence_of() is an integer not a string.

3.1.5 – 2nd November 2016

  • bugfix: Fixed conflict, affecting widget the calendar, with some tranlsation plugins. This resulted in not being able to naviage through the calendar.
  • bugfix: Fixed inline documentation
  • bugfix: Fixed <br> tag being used as a closing tag

3.1.4 – 9th September 2016

  • Tested up to 4.6.1
  • bugfix: In the iCal field don’t change the BYDAY property when a city is used as a timezone …