This round of updates mainly focuses on multilingual capabilities. As a multinational team, where all members speak at least 2 languages, the concept of multilingual compatibility has always been something we’ve appreciated and aspired to achieve.
Today, we’re happy to announce that the latest update natively integrates Multilingual compatibility, and particularly paves the way for much tighter integration with WPML compatibility plugin, which has also received a new major update.
Whilst under the hood, there are some significant changes, these may largely go unnoticed for those who have single-site languages, or who do not use WPML.
However, for those that run MultiSite websites with a language for each site, you may find this particularly useful should you want to list events on your main site in different languages, as you can now do this:
[events_list blog="all" language="es_ES"]
With this shortcode, you can display all events from Spanish blogs on your network!
More under the hood
Aside from multilingual features, various improvements were made to the codebase in order to make this happen, which includes new functions and multiple precautionary security enhancements. We recommend you update in all cases. Below is a detailed lists of changes to Events Manager and Pro.
Events Manager 5.9.7 Changeset
- fixed google calendar add-to link not including location town/zip/state
- fixed minor PHP warnings
- added timestamps for keys to $post_ids array in em_event_save_events filter
- tweaked deleting of recurrences to reduce possibility of mistken circumvention by other filters
- added parameter option to include country to EM_Location->get_full_address()
- added em_ticket_delete and em_tickets_delete filters
- added language definition for events and locations allowing for faster multilingual searches where supported
- added parent definition for events, tickets and locations paving the way for various hierarchical applications
- added language search attribute for events and locations
- fixed potential search inconsistencies when using ‘recurrence’ search attribute for finding recurrences by recurring event ID
- added multilingual support for recurring events (requires update to any compatibility plugins)
- added ability for event recurrences to assign corresponding parent ticket ids to recurrence tickets via ticket_parent db field
- fixed potentially conflict-causing permalink rules for the calendar page (fixes WPML-EM conflict on these pages)
- added support for location address translation in multilingual environments
- removed filter pointer (previously used to fix ACF conflicts) in EM_ML_IO::event_save_meta() since WP now has fixed pointer issues for nested filter triggers
- fixed EM_Event::is_recurrence() returning false when event not saved for first time
- fixed delete_events not returning true to filter when events are actually deleted
- fixed JS warning preventing address update on map when updating locations
- added various precautionary data sanitization for security enhancement
- replaced all uses of wp_redirect() with wp_safe_redirect() as a security precaution
- added encryption and autotls options to email settings
- added em_is_event() and em_is_location() object checking functions
- added native primary handling of finding translations of events and locations before passing it onto filters where translation plugins can intervene
- added native searching of events and locations based on new language/parent fields
- added native support for searching eventful and eventless arguments in multilingual context
- added native support for listing untranslated events and locations in original language when listing a second language in multilingual context
- changed EM_Event and EM_Location blog_id to default to 0 rather than null
- added shortname property names for common EM_Event and EM_Location fields language, parent, translation, id (event/location id), slug, status, name and owner
- added get_parent() function for EM_Event and EM_Location classes
- added $context peroperty to EM_Events and EM_Locations classes which leverage late static binding in PHP 5.3
- added ‘language’ search argument for events and locations which can be used in multilingual contexts
- moved table joining decision logic in EM_Locations into its own function, enabling overriding via filters
- added em_booking_email_before_send, em_booking_email_after_send and em_booking_output_pre actions in EM_Booking
- added em_booking_email filter in EM_Booking
- added name/description shortname properties and modified ticket_name/description access in EM_Ticket to enable dynamic translation of ticket names
- added price,id,spaces shortnames for EM_Ticket_Booking
- added em_ticket_booking_get_ticket filter in EM_Ticket_Booking
- added locale switching/restoring functions in EM_ML as well as syncing with the WP locale switcher
- fixed booking emails not getting correctly translated in ML modes
- fixed data privacy consent validation errors when booking in custom modes under certain setting configurations
- removed load_plugin_textdomain call in favour of letting WordPress.org automatically handle language translation files
- changed boolean database fields into tinyint(1) unsigned types
Events Manager Pro 2.6.7
- fixed booking form extra text not showing up in gateway selector booking form area,
- removed incorrect defaults for $api_options in EM_Gateway::settings_sensitive_credentials()
- fixed multiple issues where custom booking emails in Pro are not properly translated
- fixed custom booking forms potentially getting translated incorrectly when viewing the dashboard in a different language
- updated Authorize.net AIM certificate in accordance with their upcoming DNS migration (fixes certificate issues in the sandbox)