Share this

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)

You might also like

Stay in the loop

Sign up and we’ll occasionally send the latest news, tips and deals directly to your inbox.