Release: The Events Calendar Version 4.0 + all add-ons

Dear Triberians, today is a great one. The Events Calendar 4.0 is finally here and we’re thrilled for you to have it.

Version 4.0 is a huge milestone for all of us here at Modern Tribe. Consider what’s happened in the two years since Version 3.0 was released:

  • The plugin surpassed 1 million downloads, then 2 million shortly after
  • We completed nearly 900 new features
  • We squashed more than 1,000 bugs over 33 releases
  • We fielded over 35,000 topics in our forums
  • We shared countless cat gifs in with each other over Slack

Needless to say, we’ve poured a lot of love into The Events Calendar heading into Version 4.0. We hope you love it as much as we do.

There’s a whole lot of awesomeness to cover here and we’ll outline every single change here in this post, including those in the premium add-ons. On that same note, it’s important to know that The Events Calendar 4.0 is a radical departure from the previous version and, as such, you will want to test the latest plugins in a test environment before updating. If you have customized the plugin or any of the add-ons in the past, then you will most definitely want to exercise caution and test this update against your changes before updating on a live site.

Please Note: Use the Bulk Update option in WordPress if you are running The Events Calendar with multiple add-ons. We have encountered an issue where activating The Events Calendar 4.0 and Community Events separately can cause a fatal error and are working on a fix in the meantime.

Alright, let’s dig into what’s new:


The Events Calendar 4.0

  • Security – A TON of escaping was added to our codebase thanks to the efforts of the always-helpful Andy Fragen (@afragen)
  • Feature – Moved the Ticket framework code into its own plugin (event-tickets)
  • Feature – The event cost now supports more international formats with the addition of the tribe_events_cost_separators filter (Thank you remokrol for bringing this to our attention!)
  • Feature – Added support for the twentysixteen theme
  • Feature – Created a new Add-Ons tab in Settings so that TEC add-ons can have a consolidated settings tab
  • Feature – Improve the date formats UI by providing example output for each selected format
  • Tweak – Restructured TEC’s core settings code for reusability with other standalone plugins like Event Tickets
  • Tweak – Deprecate old JS event names in favor of a new JS event naming standard. Example: deprecated tribe_ev_runAjax in favor of run-ajax.tribe
  • Tweak – Consolidated import pages for TEC and add-ons
  • Tweak – When suggesting a UTF-8 compatibility CSV formatting tool, point to one that still exists
  • Tweak – Added the ability to filter attendees CSV items via tribe_events_tickets_attendees_csv_items (Props to @bostondv on GitHub for this patch!)
  • Tweak – Updated all excerpt output to use tribe_events_get_the_excerpt() to ensure a consistent display of excerpt content (Cheers to Joseph to pointing this out!)
  • Tweak – Add support for wp_get_document_title in response to the WordPress 4.4 deprecation of wp_title
  • Tweak – Check post creation permissions before letting users create venues and organizers from the event meta box
  • Tweak – Only display data separators between fields that have data when rendering organizers (Thank you Bud for highlighting this issue!)
  • Tweak – When a user cannot create organizers, prevent the auto-selection of organizers when editing an event
  • Tweak – Remove microformat CSS classes from templates and replace with namespaced content-relevant CSS classes
  • Tweak – Changed the “updated” CSS class to “tribe-updated” so that it is properly namespaced (Thank you vijayrajesh!)
  • Tweak – The Plugin Update Checker will now auto-save valid plugin keys (Thanks to Denon for originally bringing this up!)
  • Tweak – Cleaned up the output of JSON-LD data. Filterable via the new tribe_google_data_markup_json filter
  • Tweak – Drop the use of the generic CSS class “placeholder” in favor of “tribe-event-placeholder” (Thanks to Marc on the forums!)
  • Tweak – Adjusted the CSS padding on Admin Menu items for Events
  • Tweak – Various codesniffer fixes
  • Tweak – Error messages for empty Venue names
  • Tweak – Improve our responsiveness for the widget mini calendar, allowing smaller sidebars.
  • Tweak – tribe_get_venue_link() no longer echoes if you ask it to return an <a> element
  • Tweak – No longer retrieve empty costs when fetching all costs for all events
  • Tweak – Change the priority of bootstrapping the-events-calendar to ensure it occurs before any of the TEC addons in the event some addons are upgraded to v4.0 later than TEC
  • Tweak – Adjust the logic used for adding a noindex/follow tag to event views
  • Tweak – No longer hiding default address fields when default venues are selected when Pro is active
  • Fix – Resolved issue where the iCal feed did not provide an appropriately formatted timezone in some cases (Cheers to Matt for the report!)
  • Fix – Added support for translating some previously untranslatable strings (Props to tititou36, media325, and Stef!)
  • Fix – Prevented duplicate CSS IDs on the mini calendars (Cheers to Corrado for the help!)
  • Fix – Fixed bug causing tribe_get_single_ical_link() and tribe_get_ical_link() to use the same URL when it shouldn’t (Props to Ben Byrne @drywall on Twitter for the heads up!)
  • Fix – Fixed issue where the “Add another organizer” text wasn’t using the correct singular label (Thank you MIKE for the report!)
  • Fix – Various CSS fixes for twenty(ten-fifteen)
  • Fix – Improved our handling of `get_current_screen()` across the plugin, avoiding notices and warnings (Thank you Mike for the help!)
  • Fix – Fixed bug where accessing object properties on a non object errored out when saving event meta (props to @dalethedeveloper on GitHub for this fix!)
  • Fix – Fixed bug where organizer ID meta attached sometimes included a blank record. That blank record is no longer returned in tribe_get_organizer_ids()
  • Fix – Fixed error message returned when tabbing away from a blank event name meta box so that it properly indicates that an event name is required (Our thanks to @tapan29bd for this fix!)
  • Fix – Resolved issue where Timezone event start/end date property name strings were malformed which guaranteed a call to get_post_meta for Timezone date strings
  • Fix – Fixed CSS issue where the month view calendar could sometimes extend beyond the edge of the page when Skeleton Styles were enabled
  • Fix – Fixed a problem where iCal data was generated with incorrect dates in the case of some all days events (thanks to Matt for highlighting this)
  • Fix – Resolved a problem causing the previous month view to appear when it should not
  • Fix – Fixed issue in mobile month view where date was missing from heading
  • Fix – Resolved issue that caused /events/ to 404 if it was visited on a new install before hitting “Save” on the Events > Settings > Display page
  • Deprecated – The Tribe__Events__Main::defaultValueReplaceEnabled() method is being deprecated in favor of tribe_get_option(‘defaultValueReplace’). Schedules for removal in v4.5
  • Deprecated – The tribe_event_link() has been deprecated in favor of tribe_get_event_link(). Scheduled for removal in 5.0
  • Deprecated – The third parameter of tribe_get_organizer_link() (the $echo parameter) has been deprecated and is scheduled for removal in 5.0
  • Deprecated – Tribe__Events__Abstract_Deactivation in favor of Tribe__Abstract_Deactivation
  • Deprecated – Tribe__Events__Admin__Helpers in favor of Tribe__Admin__Helpers
  • Deprecated – Tribe__Events__App_Shop in favor of Tribe__App_Shop
  • Deprecated – Tribe__Events__Autoloader in favor of Tribe__Autoloader
  • Deprecated – Tribe__Events__Cache in favor of Tribe__Cache
  • Deprecated – Tribe__Events__Cache_Listener in favor of Tribe__Cache_Listener
  • Deprecated – Tribe__Events__Changelog_Reader in favor of Tribe__Changelog_Reader
  • Deprecated – Tribe__Events__Credits in favor of Tribe__Credits
  • Deprecated – Tribe__Events__Date_Utils in favor of Tribe__Date_Utils
  • Deprecated – Tribe__Events__Field in favor of Tribe__Field
  • Deprecated – Tribe__Events__Settings in favor of Tribe__Settings
  • Deprecated – Tribe__Events__Settings_Tab in favor of Tribe__Settings_Tab
  • Deprecated – Tribe__Events__Support in favor of Tribe__Support
  • Deprecated – Tribe__Events__Template_Part_Cache in favor of Tribe__Template_Part_Cache
  • Deprecated – Tribe__Events__Tickets__Attendees_Table in favor of Tribe__Tickets__Attendees_Table in the event-tickets plugin
  • Deprecated – Tribe__Events__Tickets__Metabox in favor of Tribe__Tickets__Metabox in the event-tickets plugin
  • Deprecated – Tribe__Events__Tickets__Ticket_Object in favor of Tribe__Tickets__Ticket_Object in the event-tickets plugin
  • Deprecated – Tribe__Events__Tickets__Tickets in favor of Tribe__Tickets__Tickets in the event-tickets plugin
  • Deprecated – Tribe__Events__Tickets__Tickets_Pro in favor of Tribe__Tickets__Tickets_Handler in the event-tickets plugin
  • Deprecated – Tribe__Events__Validate in favor of Tribe__Validate
  • Deprecated – Tribe__Events__View_Helpers in favor of Tribe__View_Helpers
  • Deprecated – Tribe__Events__Main::OPTIONNAME in favor of Tribe__Main::OPTIONNAME
  • Deprecated – Tribe__Events__Main::OPTIONNAMENETWORK in favor of Tribe__Main::OPTIONNAMENETWORK
  • Deprecated – Tribe__Events__Main::addHelpAdminMenuItem() in favor of Tribe__Settings_Manager::add_help_admin_menu_item()
  • Deprecated – Tribe__Events__Main::addNetworkOptionsPage() in favor of Tribe__Settings_Manager::add_network_options_page()
  • Deprecated – Tribe__Events__Main::array_insert_after_key() in favor of Tribe__Main::array_insert_after_key()
  • Deprecated – Tribe__Events__Main::array_insert_before_key() in favor of Tribe__Main::array_insert_before_key()
  • Deprecated – Tribe__Events__Main::debug() in favor of Tribe__Debug::debug()
  • Deprecated – Tribe__Events__Main::defaultValueReplaceEnabled() in favor of tribe_get_option( ‘defaultValueReplace’ )
  • Deprecated – Tribe__Events__Main::doHelpTab() in favor of Tribe__Settings_Manager::do_help_tab()
  • Deprecated – Tribe__Events__Main::doNetworkSettingTab() in favor of Tribe__Settings_Manager::do_network_settings_tab()
  • Deprecated – Tribe__Events__Main::doSettingTabs() in favor of Tribe__Settings_Manager::do_setting_tabs()
  • Deprecated – Tribe__Events__Main::do_licenses_tab() in favor of Tribe__Settings_Manager::do_licenses_tab()
  • Deprecated – Tribe__Events__Main::getNetworkOption() in favor of Tribe__Settings_Manager::get_network_option()
  • Deprecated – Tribe__Events__Main::getNetworkOptions() in favor of Tribe__Settings_Manager::get_network_options()
  • Deprecated – Tribe__Events__Main::getNotices() in favor of Tribe__Notices::get()
  • Deprecated – Tribe__Events__Main::getOption() in favor of Tribe__Settings_Manager::get_option()
  • Deprecated – Tribe__Events__Main::getOptions() in favor of Tribe__Settings_Manager::get_options()
  • Deprecated – Tribe__Events__Main::have_addons() in favor of Tribe__Settings_Manager::have_addons()
  • Deprecated – Tribe__Events__Main::isNotice() in favor of Tribe__Notices::is_notice()
  • Deprecated – Tribe__Events__Main::pluginDir in favor of Tribe__Events__Main::plugin_dir
  • Deprecated – Tribe__Events__Main::pluginName in favor of Tribe__Events__Main::plugin_name
  • Deprecated – Tribe__Events__Main::pluginPath in favor of Tribe__Events__Main::plugin_path
  • Deprecated – Tribe__Events__Main::pluginUrl in favor of Tribe__Events__Main::plugin_url
  • Deprecated – Tribe__Events__Main::removeNotice() in favor of Tribe__Notices::remove_notice()
  • Deprecated – Tribe__Events__Main::renderDebug() in favor of Tribe__Debug::render()
  • Deprecated – Tribe__Events__Main::saveAllTabsHidden() in favor of Tribe__Settings_Manager::save_all_tabs_hidden()
  • Deprecated – Tribe__Events__Main::setNetworkOptions() in favor of Tribe__Settings_Manager::set_network_options()
  • Deprecated – Tribe__Events__Main::setNotice() in favor of Tribe__Notices::set_notice()
  • Deprecated – Tribe__Events__Main::truncate() in favor of tribe_events_get_the_excerpt()
  • Deprecated – tribe_event_beginning_of_day() in favor of tribe_beginning_of_day()
  • Deprecated – tribe_event_end_of_day() in favor of tribe_end_of_day()
  • Deprecated – tribe_event_format_date() in favor of tribe_format_date()
  • Deprecated – tribe_events_the_notices() in favor of tribe_the_notices()

The Events Calendar PRO 4.0

  • FeatureAdded Customizer support for altering the colors of The Events Calendar (Cheers to the anonymous user who posted the original idea on UserVoice!)
  • Feature – Added a new widget and shortcode called “This Week” that displays a events for a given week (with pagination). Short code is [tribe_this_week]
  • Feature – Add support for a countdown to the next upcoming event in the Countdown Widget (Thank you Phil de Gruchy for posting this idea on UserVoice!)
  • Feature – Add support for twentysixteen
  • Feature – Add support for an iCal export link for all events in a series of recurring events via: tribe_get_recurrence_ical_link()
  • Tweak – Major tweaks to support the newly genericized tribe-common libraries
  • Tweak – Deprecate old JS event names in favor of a new JS event naming standard. Example: deprecated tribe_ev_runAjax in favor of run-ajax.tribe
  • Tweak – Altered the storage of selected multichoice values for custom fields so they can be queried more effectively
  • Tweak – Add JSON-LD markup to single venus and organizers
  • Tweak – Only pre-populate address data for venues when the venue metabox appears on the venue post editor – NOT the event post editor
  • Tweak – Simplify the machine-generated recurrence rule descriptions for simple rules (Thank you jberg1 for the help!)
  • Tweak – Add support for multiple organizers to the List Widget (Thank media325 for the report!)
  • Tweak – Remove microformat CSS classes from templates and replace with namespaced content-relevant CSS classes
  • Tweak – Add support for a count argument to the mini calendar shortcode
  • Tweak – Refactored part of recurrence code to make testing it easier
  • Fix – Resolved bug where recurrence exclusions were not getting respected while generating events
  • Fix – Resolved bug where extra spaces were added to the body_class return value (Props to @garrettjohnson for this fix!)
  • Fix – Resolved issue where tribe_all_occurences_link() sometimes returned an incorrect URL when an explicit ID was passed
  • Fix – Don’t escape HTML on additional fields that hold URLs (Thank you Gwenyth for bringing this to our attention!)
  • Fix – Updated comment in Week View tooltip and mobile templates to point at the right file for customization instructions
  • Fix – Fixed CSS issues with the responsiveness of the Calendar Widget & Countdown Widget
  • Fix – Prevent notices in the Venue Widget by declaring default settings
  • Fix – Resolved HTML validation issue with the Countdown Widget (Thank you rverduin for reporting this issue!)
  • Fix – Various twenty(ten-sixteen) CSS fixes
  • Fix – Fixed bug where pre-3.12 recurrence events were returning false when tribe_is_recurring_event() was called
  • Fix – Fixed issue where a recurring event’s “all” view would not display past instances
  • Fix – Fixed bug with APM where sorting some columns caused post filtering to clear
  • Fix – Fixed various notices
  • Fix – Fixed issue where some strings were trying to use the wrong textdomain for translations (Props to Valu for the help!)
  • Fix – Fixed date issue with the List Widget where the fancy date box was always displaying today’s date
  • Fix – Resolved a problem preventing some category views from working as expected when a non-default language was in use (Thank you Cristina for highlighting this issue!)
  • Fix – Resolved a problem whereby mini calendars could incorrectly render some days as populated when set to display events in a specific category (Our thanks to oniregoc for highlighting this!)
  • Fix – Fixed some strings that were not getting translated (thanks to Hans-Gerd for reporting this issue!)
  • Fix – Fixed monthly exclusion not being respected when creating recurring events
  • Deprecated – Deprecating the “defaultValueReplace” option in the Default Content settings tab

Filter Bar 4.0

  • Feature – Additional fields created with Events Calendar PRO can now be used as filters (Thank you Lars for originally suggesting this on UserVoice!)
  • Tweak – Revise the way category filters work to improve compatibility with custom filter implementations etc (Props to Nancy Barraza for this one!)
  • Tweak – Update JS event names to match the changes in the-events-calendar

Community Events 4.0

  • Feature – Added new Filter on Community Events related pages (`tribe_ce_i18n_page_titles`) (Thank you Mad Dog!)
  • Tweak – Add support for wp_get_document_title in response to the WordPress 4.4 deprecation of wp_title
  • Tweak – Output the “Advanced Template Settings” custom HTML before and after the event list and event add form (Thank you Benjamin for the heads up!)
  • Fix – My Events ordered now reverse chronologically, as it was intended (earlier first)
  • Fix – Better CSS for when My Events page Navigation has multiple pages
  • Fix – Make some strings translatable that were not (Props to Oliver for bringing it to our attention)
  • Fix – Resolved an issue where translations sometimes failed to load (Thanks for the report and the fix Murat!)

Community Tickets 4.0

  • Fix – Compatibility fix with PHP 5.2 when accessing the WooCommerce cart

iCal Importer 4.0

  • Feature – Added support for \n as linebreaks in event content (Thank you Steve for bringing this to our attention!)
  • Tweak – Modify the handling of recurring events so that they are consistently saved as individual (though non-recurring) events (Props to Justin for reporting this!)
  • Tweak – Standardize spinner styles and behaviors to match those of WP core
  • Tweak – Always import latitude and longitude coordinates if the address is findable via Google’s geocoding API

Eventbrite Tickets 4.0

  • Feature – add filters making it possible to prevent image synchronization (Thanks to capacitycanada for the help!)
  • Fix – No more Empty notices when activating the plugin

Facebook Events 4.0

  • Feature – Added the option to re-synchronize an imported event by pulling in the latest information from the matching Facebook event (Thanks to Jon Martin for proposing this on UserVoice!)
  • Tweak – Added tribe_events_facebook_event_created hook (provides Event ID, Organizer ID, and Venue ID as parameters) when an event is imported from Facebook

Advanced Post Manager

  • Fix – improved code standardization to bring this up to Modern Tribe standards
  • Feature – increased language support including Catalan, Czech, French, and Portuguese (Portugal)