The Events Calendar 5.0.0

The Events Calendar 5.0.0 has officially released! We’re stoked to get this updated version in your hands because it is a major update (the fifth major iteration!) and includes significant upgrades to your calendar we think you are absolutely going to love.

The big news is that every single calendar view got a major design update that looks modern and fresh right out of the box. Since this is a big release, we do recommend backing up your site and testing thoroughly before performing any updates. A release like this has the potential to impact the existing style and functionality of your calendar, especially if you have made customizations along the way.

We’ve got a few new Knowledgebase Articles to help you transition over to the new design. This is a great place to get a preview of what you can do.

Let’s get to the changelogs:

• Feature:– We have created new Month, Day, and List views with all new HTML, CSS, and JavaScript
• Feature: We added an upgraded path for the new Month, Day, and List views which make it opt-in for any existing users.
• Feature: We have created a new templating engine that powers the new Views.
• Feature: Our views initialization and instance includes more filters and actions to allow improved extensibility and customization. You can read more about all of those filters below.
• Feature: Views manager and bootstrapping classes were created to allow more control over where and when views will be initialized. Filters related to this are also listed below.
• Feature: We have reduced the maintenance burden of customizations by leveraging atomic templates for the new views. (See list of files now available below)
• Feature: Our CSS now uses a Block Element Modifier (BEM) methodology to improve the reusability of components.
• Feature: The new views share one JavaScript Manager, which contains multiple jQuery actions and customization points.
• Feature: View navigation relies on the WordPress Rest API, improving reliability and caching opportunities.
• Feature: Event permalinks are now more consistent across navigation using WP_Rewrite to map parameters to their matching URL, which improves SEO.
• Feature: The following event data filtering is used across all new views: tribe_get_event_before, tribe_get_event, tribe_get_event_after, tribe_events_organizers_fetch_callback, tribe_events_venues_fetch_callback
• Feature: The following venue data filtering is used across all new views: tribe_get_venue_object_before, tribe_get_venue_object
• Tweak: Custom Before and After HTML on the Events > Settings page will now use event view styling over the Theme’s CSS.
• Tweak: We have lowered the reliance on the global \$wp_query to create more consistent output and faster maintenance for our users.
• Tweak: The template overrides for the new views will look within a new folder in your theme to avoid conflicting with old The Events Calendar theme customizations.
• Tweak: We made a switch to a compact date while on day and month view in mobile, for better visibility.
• Tweak: We have removed tribe_events_getLink in favor of tribe_events_get_link which was a deprecated filter since version 4.3.
• Hooks: View template includes and render filters and actions: tribe_template_before_include, tribe_template_before_include:{\$template_path}, tribe_template_after_include, tribe_template_after_include:{\$template_path}, tribe_template_html, tribe_template_html:{\$template_path}
• Hooks: View instance filters and actions: tribe_events_views_v2_view_template, tribe_events_views_v2_{\$view_slug}_view_template, tribe_events_views_v2_view_context, tribe_events_views_v2_{\$view_slug}_view_context, tribe_events_views_v2_view_repository, tribe_events_views_v2_{\$view_slug}_view_repository, tribe_events_views_v2_view_url_query_args, tribe_events_views_v2_{\$view_slug}_view_url_query_args, tribe_events_views_v2_view_html_classes, tribe_events_views_v2_{\$view_slug}_view_html_classes, tribe_events_views_v2_url_query_args, tribe_events_views_v2_view_template_vars, tribe_events_views_v2_view_{\$view_slug}_template_vars, tribe_events_views_v2_view_url, tribe_events_views_v2_view_{\$view_slug}_url, tribe_events_views_v2_view_prev_url, tribe_events_views_v2_view_{\$view_slug}_prev_url, tribe_events_views_v2_view_next_url, tribe_events_views_v2_view_{\$view_slug}_next_url, tribe_events_views_v2_view_repository_args, tribe_events_views_v2_view_link_label_format, tribe_events_views_v2_view_{\$view_slug}_link_label_format, tribe_events_views_v2_view_title, tribe_events_views_v2_view_{\$view_slug}_title, tribe_events_views_v2_view_messages, tribe_events_views_v2_view_{\$view_slug}_messages, tribe_events_views_v2_view_breadcrumbs, tribe_events_views_v2_view_{\$view_slug}_breadcrumbs, tribe_events_views_v2_view_display_events_bar, tribe_events_views_v2_view_{\$view_slug}_display_events_bar, tribe_events_views_v2_view_ical_data, tribe_events_views_v2_view_{\$view_slug}_ical_data, tribe_events_views_v2_view_show_datepicker_submit, tribe_events_views_v2_view_{\$view_slug}_show_datepicker_submit, tribe_events_views_v2_view_public_views, tribe_events_views_v2_view_{\$view_slug}_public_views, tribe_events_views_v2_view_data, tribe_events_views_v2_{\$view_slug}_view_data, tribe_events_views_v2_{\$view_slug}_events_per_day, tribe_events_views_v2_month_events_per_day, tribe_events_views_v2_month_nav_skip_empty, tribe_events_views_v2_view_breakpoints, tribe_events_views_v2_view_{\$view_slug}_breakpoints, tribe_events_views_v2_before_make_view, tribe_events_views_v2_after_make_view, tribe_events_views_v2_messages_map, tribe_events_views_v2_view_messages_before_render
• Hooks: View REST API HTML request actions and filters: tribe_events_views_v2_request_arguments, tribe_events_views_v2_rest_endpoint_available, tribe_events_views_v2_rest_params, tribe_events_views_v2_{\$view_slug}_rest_params
• Hook: Views Bootstrap filters and actions: tribe_events_views_v2_bootstrap_pre_get_view_html, tribe_events_views_v2_bootstrap_should_display_single, tribe_events_views_v2_bootstrap_view_slug, tribe_events_views_v2_bootstrap_pre_should_load, tribe_events_views_v2_should_hijack_page_template
• Hooks: Views Manager filters and actions: tribe_events_views, tribe_events_views_v2_manager_default_view, tribe_events_views_v2_manager_view_label_domain, tribe_events_views_v2_manager_{\$view_slug}_view_label_domain, tribe_events_views_v2_manager_view_label, tribe_events_views_v2_manager_{\$view_slug}_view_label
• Hooks: Other views filters and actions: tribe_events_views_v2_is_enabled, tribe_events_views_v2_assets_should_enqueue_frontend, tribe_events_views_v2_assets_should_enqueue_full_styles, tribe_events_v2_view_title, tribe_events_views_v2_should_replace_excerpt_more_link, tribe_events_views_v2_view_before_events_html, tribe_events_views_v2_view_after_events_html, tribe_events_views_v2_month_title, tribe_events_views_v2_day_title, tribe_events_views_v2_category_title, tribe_events_views_v2_theme_compatibility_registered, tribe_events_views_v2_stack_spacer, tribe_events_views_v2_stack_recycle_spaces, tribe_events_views_v2_stack_events, tribe_events_views_v2_stack_filter_event, tribe_events_views_v2_stack_normalize
• Templates: Views refactored template files: `v2/base`, `v2/components/after`, `v2/components/before`, `v2/components/breadcrumbs`, `v2/components/breadcrumbs/breadcrumb`, `v2/components/breadcrumbs/linked-breadcrumb`, `v2/components/breakpoints`, `v2/components/data`, `v2/components/events-bar`, `v2/components/events-bar/filters`, `v2/components/events-bar/search-button`, `v2/components/events-bar/search-button/icon`, `v2/components/events-bar/search`, `v2/components/events-bar/search/keyword`, `v2/components/events-bar/search/submit`, `v2/components/events-bar/tabs`, `v2/components/events-bar/views`, `v2/components/events-bar/views/list`, `v2/components/events-bar/views/list/item`, `v2/components/filter-bar`, `v2/components/ical-link`, `v2/components/loader`, `v2/components/messages`, `v2/components/read-more`, `v2/components/top-bar/actions`, `v2/components/top-bar/actions/content`, `v2/components/top-bar/datepicker/submit`, `v2/components/top-bar/nav`, `v2/components/top-bar/nav/next-disabled`, `v2/components/top-bar/nav/next`, `v2/components/top-bar/nav/prev-disabled`, `v2/components/top-bar/nav/prev`, `v2/components/top-bar/today`, `v2/day`, `v2/day/event`, `v2/day/event/cost`, `v2/day/event/date`, `v2/day/event/date/meta`, `v2/day/event/description`, `v2/day/event/featured-image`, `v2/day/event/title`, `v2/day/event/venue`, `v2/day/nav`, `v2/day/nav/next-disabled`, `v2/day/nav/next`, `v2/day/nav/prev-disabled`, `v2/day/nav/prev`, `v2/day/time-separator`, `v2/day/top-bar`, `v2/day/top-bar/datepicker`, `v2/day/type-separator`, `v2/index`, `v2/list`, `v2/list/event`, `v2/list/event/cost`, `v2/list/event/date-tag`, `v2/list/event/date`, `v2/list/event/date/meta`, `v2/list/event/description`, `v2/list/event/featured-image`, `v2/list/event/title`, `v2/list/event/venue`, `v2/list/month-separator`, `v2/list/nav`, `v2/list/nav/next-disabled`, `v2/list/nav/next`, `v2/list/nav/prev-disabled`, `v2/list/nav/prev`, `v2/list/nav/today`, `v2/list/top-bar`, `v2/list/top-bar/datepicker`, `v2/month`, `v2/month/calendar-body`, `v2/month/calendar-body/day`, `v2/month/calendar-body/day/calendar-events`, `v2/month/calendar-body/day/calendar-events/calendar-event`, `v2/month/calendar-body/day/calendar-events/calendar-event/date`, `v2/month/calendar-body/day/calendar-events/calendar-event/date/meta`, `v2/month/calendar-body/day/calendar-events/calendar-event/featured-image`, `v2/month/calendar-body/day/calendar-events/calendar-event/title`, `v2/month/calendar-body/day/calendar-events/calendar-event/tooltip`, `v2/month/calendar-body/day/calendar-events/calendar-event/tooltip/cost`, `v2/month/calendar-body/day/calendar-events/calendar-event/tooltip/date`, `v2/month/calendar-body/day/calendar-events/calendar-event/tooltip/date/meta`, `v2/month/calendar-body/day/calendar-events/calendar-event/tooltip/description`, `v2/month/calendar-body/day/calendar-events/calendar-event/tooltip/featured-image`, `v2/month/calendar-body/day/calendar-events/calendar-event/tooltip/title`, `v2/month/calendar-body/day/more-events`, `v2/month/calendar-body/day/multiday-events`, `v2/month/calendar-body/day/multiday-events/multiday-event-spacer`, `v2/month/calendar-body/day/multiday-events/multiday-event`, `v2/month/calendar-header`, `v2/month/mobile-events`, `v2/month/mobile-events/mobile-day`, `v2/month/mobile-events/mobile-day/day-marker`, `v2/month/mobile-events/mobile-day/mobile-event`, `v2/month/mobile-events/mobile-day/mobile-event/cost`, `v2/month/mobile-events/mobile-day/mobile-event/date`, `v2/month/mobile-events/mobile-day/mobile-event/date/meta`, `v2/month/mobile-events/mobile-day/mobile-event/featured-image`, `v2/month/mobile-events/mobile-day/mobile-event/title`, `v2/month/mobile-events/mobile-day/more-events`, `v2/month/mobile-events/nav`, `v2/month/mobile-events/nav/next-disabled`, `v2/month/mobile-events/nav/next`, `v2/month/mobile-events/nav/prev-disabled`, `v2/month/mobile-events/nav/prev`, `v2/month/mobile-events/nav/today`, `v2/month/top-bar`, `v2/month/top-bar/datepicker`, `v2/not-found`
• Language: 2 new strings added, 169 updated, 1 fuzzied, and 0 obsoleted