Latest Updates 

  • Fixed a bug where some event running times would result in a negative calculated running time and calendar display issues.


v. 1.6.5 - July 2023

  • Custom Event Instance Types

    You can now customize Event Instance Types in Groundplan >> Settings >> Event Instance Settings. Default and event instance types with functionality such as Performance, Sold Out, Free and Online / On Demand are included automatically and cannot be removed. Delete all options to restore defaults.

* Fixed a bug with Agenda click to show calendars when displayed using a shortcode in some themes when group performances is not active.

* Fixed a bug with fast forward fallbacks that affected at least Agenda calendars in certain date and performance time situations.

* Added Day of week to Agenda Dates

* Updated ACF to version 6.1.6

* Monthly calendar dropdowns now correctly display the month when navigating to previous months.

* Adjusted date validation to avoid issues with malformed time zones.

* Added data attributes for events and user event actions to Calendar buttons to aid in e-commerce measurement, e.g. with Google Analytics 4 (GA4).

* Added xdgp_monthly_header_before_current_month and xdgp_monthly_header_after_current_month hooks to allow modification of Month, Single and Mini headers.


1.6 - June 2022


* Added performance improvements for load_all and events queries.

* Upgraded ACF to version 6.0.7

* PHP 8 compatibility

* Added suppress_filters to internal calendar queries to avoid some plugin compatibility issues with plugins and themes that modify post queries.

* Refactored excludes and filters for improved reliability in a range of edge cases

* added 'excluded_terms' and 'filtered_terms' calendar configuration arguments that are merged with previous 'exclude' and 'filter' URL arguments.

1.5.6 - October 2020


Improved support for On Demand / All Day and Online Events and Multiple Time Zone Support

On Demand / All Day Events

On Demand Event Instances do not display time on calendars, as they are available all day. When your event is available only within a date range, create one event instance per day that the On Demand event is available, or leave the event unscheduled if it's available indefinitely. The final event instance time should be set to the time cutoff for the event on the last day of availability, which determines when the event 'closes'. If you are including On Demand events on a hybrid Festival calendar, you may want to schedule them for the beginning of your day, and connect them to an "On Demand" venue to help display them along with scheduled events.


Display Time Zones to support Online Events - The new setting in Groundplan >> Settings includes your local time zone in all calendars. If you display time in your custom theme outside of a Groundplan calendar (e.g. on your event detail page), have your developer hook up the new XDGPPerformance class, or contact us to support this feature in your custom code.




  • On Demand events follow the correct Event Schema for online events, along with the Online Event setting.  On Demand events have an all-day time setting in schema.
  • Added the organizer property to Event Schema to support Online Events.
  • When a user enables a genre filter on the month calendar and then navigates between months, the filter status is now retained until the user disables the filter.
  • the "Online Event" performance type has been relabeled to "Online" to support online classes and other types of programming.  These settings do not have to be migrated.
  • Added hooks for Genre filter display, Agenda Calendar Buy buttons, and Add to Calendar dropdown controls for additional customization options.
  • the XDGPEvent object now calculates "Online" as an available status label using XDGPEvent::get_statusLabel()
  • Canceled and Postponed performances in the past will keep their Canceled or Postponed label.
  • Added performance notes to the Mini calendar hover version.
  • Updated ACF for compatibility with WP 5.5


1.5.0 - April 2020

Covid-19 Response: Enhanced support for Rescheduled, Postponed, Canceled and Online Events


In this major release, performances can now be set to additional event types to help you coordinate communication to your audience.  When Groundplan Settings >> Structured Data is enabled, each event type also supports updated structured data event schema to Google and other search engines, which can help search engine communicate the appropriate event status.

Read this blog article for more guidance on the new Google Events features.


The following Event Instance types have been added:


  • Online Event - for Virtual performances.  You can optionally use the new Event Structured Data >> Online Event URL if you have a different URL for your online performance.  Do not publish a Virtual Event URL if it should be a secret URL that only ticket buyers have access to.

  • Postponed - Use when an event is going to be rescheduled for a later date but the date has not yet been determined.  Disables ticket links.
  • Rescheduled - Use on the adjusted new date of a rescheduled performance.  Ticketing links are NOT disabled, as the event is now on sale at the new time and date.  Note that if you want to include the old scheduled performance on your calendar, you can add a dummy "Postponed" event instance from the previous time and adjust the ticketing link to point to the new date and time.
  • Canceled - Use when an event is entirely canceled.  Disables ticket links.


Note that if you have custom Buy Tickets button logic on your home or event pages, you may need to adjust your WordPress theme code to use these new features in your custom code.  These features occur on the Performance level, and require adjusted logic to be calculated on the Event level.



1.4.5 - March 2020

New Add-Ons and Add-On Features - Presales

We're excited to announce a big addition to the Groundplan Pro add-on family:  The Groundplan Presale Add-On adds presale support for your themes.  You can schedule an onsale date, and optionally supply a set of Presale access codes.  Tickets buttons are hidden behind a form, and users can enter an access code – if their code is active, the ticketing button appears.  The presale


Other Updates


  • Groundplan's custom objects and fields like Events / Classes, Venues, and add-on objects like People are now included in the WordPress REST API.  Public post types are added as REST API endpoints.
  • Enhanced Venue filtering queries to support additional edge cases.
  • Added filtering for schema data to hide ticketing URLs in all presale situations.
  • Added more situations for running time calculation and enhanced error handling for edge cases.
  • Added hooks for buy ticket display functions to support ticket button filtering.
  • Added Error Handling for venues with duplicate time zones in postmeta.
  • When filter URL variable is applied, dropdown filters now update their status to reflect the filter in addition to filtering event results.
  • Fixed a bug where the mini calendar would only display part of the run of an event in some circumstances using multi-page mode.
  • Fixed a bug where Event Structured Data controls wouldn't appear when certain add-ons aren't activated.
  • Performance statuses like Sold Out (or your custom Sold Out Message) now appear on the mini calendar details view.


1.4.0 - October 2019

Structured Data Features

We've updated Event Structured Data support to be compatible with changes to Event Schema earlier this year and now include Performer data and SEO-compliant pricing fields.  Structured data is now automatically included on single event detail pages to be compliant with guidelines.


When structured data is enabled, you'll see the following additional fields for each event. Most structured data is determined automatically from other fields like your ticketing URLs, Event Instances and short descriptions, but these fields are required to be compliant with Schema guidelines.



  • Hide Structured Data for a single event if that event is a non-standard event that you don't want in search results.
  • Set an Event Performer and Performer Type if you want your event to show up in search results for a band or performer.  This name must match official spellings for performers, and there is no guarantee that search engines will display your event where you want – other configuration settings on your website or in organic search results may impact your events performance.
  • Set a Lowest Price to display the lowest available ticket price in your search results.
  • Under the hood, we improved the structured data specification to include formatted offers, endDates and ticket availability.

iCal / GCal features for Festivals and Classes

  • iCal subscription feeds can now support entire events or multiple events
  • Updated iCal links to support subscribable event feeds (e.g. Classes) using the new xdgp_calendar_ical_subscribe_link hook.


Also in this release:

Configuration Improvements

  • The venue dropdown now can be used as a helper for layout filter forms.
  • Password-protected events are now filtered from calendars UNLESS on a singular event page (e.g. on the event page itself).  Therefore, password protected events can display single event calendars for that event, but other calendars will filter that event assuming that the event should be kept protected.
  • The hard limit has been removed from Short Title.
  • Dropdown filters now include child terms (e.g. hierarchical genres or series)


Improved accessibility and compatibility

  • Complete audit and improvement of ARIA compatibilty and Accessibility features.
  • Failsafes for dropdowns if Select2 is not loaded with the document due to a theme or plugin conflict.
  • Clarified ticketing labels for in-progress events.
  • Added "Audio Described" and "ASL Interpreted" Performance types.
  • Updated links to the new support portal.


Developer Super Powers & Performance Improvements

  • Added xdgp_event_general_ticket_url hook for additional Ticket URL processing.
  • Added the xdgp_get_event_image hook to allow for modification of event images on the calendar.
  • Agenda | now honors the month_format argument for each performance
  • Began code refactoring for Event and Performance objects to make them more extensible and to support improved testing.
  • Grid Calendar | Improved automatic separator display in Film meta


Extension Support

  • Check for Wait List URL if Education Add-on is activated, and include it in the right conditions (e.g. a sold out class)
  • xdgp_unset_groundplan_field now accepts 'default' as a value to disable default fields on events but not on classes


Bug & Usability Fixes

  • Monthly calendars | fixed a bug when filtered by specific events, where the calendar wouldn't fast forward in some situations when the event displayed in the beginning of the next month (within the pad dates).
  • Mini Calendar | Fixed a bug with end-of-month events when displaying a single event.
  • Mini Calendar | No longer displays an extra month at the end of the range when show_months is set.
  • Agenda Calendar | fixed a bug where time zone conversion would include performance times in different months when filtering by month.
  • Monthly Calendar |  Now supports far lookahead for over 12 months in advance.
  • Dropdown Calendar | Disabled date selects when no ticket URL is present.
  • Adjusted how xdgp_load_all marks posts as loaded to fix a bug with multi-post-type queries.
  • Fixed a bug where incorrect months would display in the month navigation on the 30th or 31st days of months.



1.3.0 - November 2018


1.3.0 expands Groundplan Pro's flexibility in a few critical ways to serve the needs of film festivals and arts education departments that offer classes, while automating some settings changes intuitively based on your event's scheduling status.


In this release:

More flexibilty & configuration options

  • Performances now support start times in 5 minute increments.
  • If all performances are sold out, the sold out status bubbles up to the event level automatically.
  • performance_type_position can be used to display performance type labels above, below, or inside the buy tickets button, depending on your design

  • month_navigation option for Monthly calendars adds a dropdown navigation of one year of monthly calendars, for companies that have ticket sales far in advance.
  • event_template supports filtering calendars by Events and Classes when they are combined on the same calendar.

Event Filtering Improvements

  • Improved Genre and Venue filtering UX improvements
  • When selecting a different genre or venue taxonomy, previous selections are cleared to reflect the new filter choice.
  • Added filtering support to Agenda calendars.
  • Improved operation of 'filter' parameters when using dropdown filters.
  • Improved DOM for multiple taxonomy dropdown filters on monthly calendars.

Guardrails for Unscheduled Events

  • Unscheduled events now automatically switch to scheduled mode when you add Event Instances (which is a schedule).
  • When unscheduled event mode is active, the field highlights in yellow to warn the user that the event may behave unexpectedly without a schedule.
  • Events where event instances are removed now also clear display date fields. The date override still applies in those cases (e.g. with an unscheduled event like "Coming Soon in 2019")
  • Clarified error messages when an unscheduled event is used to generate a calendar.

Festival Grid Calendar Improvements

  • Added capability to sort venues by menu_order (using a third-party reorder plugin)
  • The first date in a calendar is now left-aligned when the page loads
  • Added mobile date navigation
  • Improve Date Navigation for short festivals
  • Include Taxonomy, Short Description and start and end time by default in Grid Calendar
  • Fixed a bug with the combination of Grid Calendar with Click to Show event filters
  • Improved mobile display
  • Better support for altering height of hours
  • Observe Short title in summary
  • Improved activation of current date behavior

Mini Calendar Improvements

  • Added JQuery event handlers for different states of the Mini Calendar.
  • Fixed a bug where a maximum of 3 months of performances would display even when show_all is set to true.
  • Buy Tickets buttons are hidden when a link is disabled (e.g. through a filter)

Styling and Customization support

  • When using the Education add-on, event fields can be disabled or enabled by specific template type using the `xdgp_enable_field_by_template` or `xdgp_disable_field_by_template` hooks
  • Added a `.day--month-begin` class to the first of the month or the first date that appears on a page.
  • xdgp_calendar_public_performance_api_data hook allows you to modify API values like Performance description on the performance level.

Performance and compatibility improvements

  • Updated to be compatible with ACF Pro 5.7.7
  • Dropdown Calendar | Now supports scheduled events up to 2 years in advance.
  • Improved calculation of Sold out status for events with different ticketing configurations, including package events.
  • Improved performance of xdgp_load_all by avoiding duplicate calls on the same query, and skipping the loading process when there are no query results.
  • Improved the performance of updating all events when syncing from a ticketing system with a large number of un-imported events.
  • Improved the performance of xdgp_load_all when Education add-on is enabled.

Squashed Bugs

  • Agenda Calendar | DOM Bugfix when grouping by day
  • Fixed an issue with load_occurences where venue and event fields equal to 0 would not load.
  • Fixed an issue affecting events that started at the same time in different venues (get_performances_by_starttime_and_event()).
  • Fixed an issue on calendars when Event titles were not set.
  • Fixed a bug with some performance types, e.g. Student Matinees, that would ignore custom buy ticket text.
  • Fixed a bug which would hide some events on the mini calendar if multiple events started at the same time in different venues.


1.2.0 - February 2018

Groundplan 1.2.0 is one of our biggest updates yet, with added features to enhance event SEO, Ticketing integration support, and support for our new Education Add-on.

Structured Data

PatronManager / Ticketing Integration Enhancements

  • As of 1.1.9, you can now resync all events with PatronManager from Groundplan >> Settings.  New performances, if any, are added, sync fields that are empty in WordPress are updated, newly sold out performances are updated, and date ranges are updated if there are any changes.

  • Support for loading custom sync fields with xdgp_load_all.
  • Support for resaving all events with one click with integrated ticketing Add-ons.
  • Fields that sync with PatronManager or other platforms are now highlighted in Green
  • Repair to PatronManager syncing when dates are sold out or ticket URLs are changed

New Education Add-on

Organize and sell Classes on your site, with support for PatronManager.

  • Education Add-on and Event Template support
  • Support for filtering calendars by Event Template Type (e.g. Classes vs. Events)
  • Remove unnecessary fields for different Event Templates.

Festival Calendar Enhancements

  • The current date now opens with the page load.
  • Visual improvements for 1 and 2 venue grids.
  • Include day of week in date header.

API / Customization Enhancements

  • Added performance objects to the xdgp_calendar_display_event_link filter.
  • Added xdgp_calendar_display_monthly_day_heading hook for modifying the date headers for Monthly calendars.
  • Added the xdgp_calendar_display_event_short_title for Title customizations for calendars.
  • Added additional CSS classes for all performance types.
  • Added filters to modify default post-to-post relationships and meta fields (https://nickxd.atlassian.net/wiki/spaces/GRNPLNDOCS/pages/48664178/Groundplan+Hooks+and+Filters)
  • Added ability to modify the slug of a Groundplan Custom Post Type (e.g. to relabel Seasons)
  • Added the xdgp_event_instance_arguments hook to modify Event Instance fields, including adding/removing Performance Types
  • Modified the display_date argument to allow for date requests in specific themes, e.g. with the monthly calendar.
  • Added IDs to weeks in Monthly & Weekly calendars for additional JS customization support.
  • More consistent calculations for Date and Performance Classes, allowing developers to customize the color and look and feel of different types of dates and performances
  • Added the `day--sold-out` and `day--sold-out-partial` classes, allowing mini calendar dates to be color coded by demand / availability

Other Enhancements

  • Event fields have been reorganized more logically.
  • Added support for custom date formats for dropdown calendars.
  • Improved genre filtering functionality - user preference now is saved as the user browses between months, for both filters and exclude genre nav types.
  • Mini Calendar | Added a performance note to the detail section when performance type is not Performance or Sold Out.
  • Added an option to customize Display Date Formats.
  • Added the Student Matinee Performance Type
  • When Vague Dates status is changed, event dates update automatically when the event is saved

Bug fixes

  • Fix an incompatibility issue with some versions of ACF Image Crop Add on
  • Fixed a bug to allow multiple calendars on same page when Structured Data is enabled.
  • Fixed a bug where performances on the monthly calendar would fail to sort by start time when not grouping performances by event.
  • Fixed a bug that would hide performances from the dropdown calendar close to the start of the performance
  • Improved compatibility with AJAX Load More and other custom event actions.
  • Support for multiple mini calendars on a page
  • A number of improvements to the styling capabilities of the mini calendar and all monthly calendars
  • More resilient performance sorting by date
  • Adjustments for daylight savings time (honoring local timezone customs)


1.1.0 - October 2017

  • NEW in 1.1.0 - Added the new hourly Grid Calendar for Festival and Conferences
  • Event status is now automatically loaded as $post->status when running xdgp_load_all().
  • Prepare support for the Season Custom Post Type Add-on
  • Added the xdgp_event_general_ticket_url() function for simpler General Ticket URL logic in themes.
  • Season Taxonomy can now be relabeled (like Genre)
  • Fixed a bug with calendars displaying incorrect date ranges that affected events with one performance at the end of a week.
  • Support for multiple genre taxonomy filters that overlap
  • Fixed a bug preventing display of dropdown genre filters on Monthly calendars
  • Tested for PHP 5.4 - PHP 7 compatibility
  • Prefixed flexbox declarations for better IE 11 browser compatibility.
  • Fixed an issue with show_all for the full date range in agenda mode which affected agenda calendars.
  • Adjusted fast_forwarding of mini calendar when displaying date ranges with few performances.
  • Performances now support the "Open Captioned" performance type.
  • ACF updated to 5.6.0


1.0.0 - April 2017

  • Groundplan Pro now includes all features on the 1.0 roadmap! And there's more to come.
  • Optionally enable Add to iCal, gCal, and Outlook menus. Setting the enable_add_to_calendar attribute to True enables iCal/gCal links on monthly, agenda, mini, and single calendars for specific performances.
  • System Status Report view to help when troubleshooting environment-specific issues.
  • Mini Calendar Date Detail UX improvements for use cases like Museum Tours and multiple performances per day. See the docs on the detail_container attribute to enable mini calendars that support many performances per day:
  • https://nickxd.atlassian.net/wiki/display/GRNPLNDOCS/Groundplan+Calendar+Configuration+and+Shortcodes#GroundplanCalendarConfigurationandShortcodes-mini
  • ACF dependency updated to 5.5.11


0.8.0 - March 2017

  • Mini Calendar now supports fast_forward mode, even when displaying multiple months at a time. In fast_forward mode, mini calendar will start displaying months beginning with the next performance in the scope of events.
  • Added the \"Free\" and \"RSVP\" Performance Types
  • Added a \"Free Message\" field for events which displays a custom note in the calendar when a performance is of type \"Free\"
  • Fixed a bug where event queries would not honor alternate orderby parameters.
  • Added the xdgp_calendar_display_event_classes filter to allow for custom classes on event blocks
  • Adjusted defaults for Vague Date Mode (off by default)


0.7.0 - February 2017

  • Genre & Season taxonomies are now enabled even without PatronManager Add-On
  • Fixed a regression where Month navigation did not appear in date pickers
  • Display Dates now update when first creating an event with new Performances.
  • Fixed a bug that would disable Calendar base skins when first installing Groundplan
  • Additional DOM classes for Agenda calendars
  • Support for multiple event_ids (to replace single_event setting)