Events Manager Plugin

Price: FREE
Sold By:

Contributors: netweblogic, nutsmuggler
Donate link:
Tags: bookings, calendar, tickets, events, buddypress, event management, google maps, maps, locations, registration
Text Domain: events-manager
Requires at least: 4.8
Tested up to: 5.3
Stable tag:
Requires PHP: 5.3

Fully featured event registration management including recurring events, locations management, calendar, Google map integration, booking management

== Description ==

Events Manager is a full-featured event registration plugin for WordPress based on the principles of flexibility, reliability and powerful features!

Version 5 now makes events and locations WordPress Custom Post Types, allowing for more possibilities than ever before!

* [Demo](
* [Documentation](
* [Tutorials](

= Main Features =

* Easy event registration (single day with start/end times)
* Recurring and long (multi-day) event registration
* Bookings Management (including approval/rejections, export CVS, and more!)
* Multiple Tickets
* MultiSite Support
* BuddyPress Support
* Submit Events
* Group Events
* Personal Events
* Activity Stream
* more on the way
* Guest/Member Event submissions
* Assign event locations and view events by location
* Event categories
* Easily create custom event attributes (e.g. dress code)
* Google Maps [(see our API usage recommendations)](
* Advanced permissions - restrict user management of events and locations.
* Widgets for Events, Locations and Calendars
* Fine grained control of how every aspect of your events are shown on your site, easily modify templates from the settings pages and template files
* iCal Feed (single and all events)
* Add to Google Calendar buttons
* RSS Feeds
* Compatible with SEO plugins
* Timezone Support - create events in different timezones
* Plenty of template tags and shortcodes for use in your posts and pages
* Actively maintained and supported
* Lots of documentation and tutorials
* And much more!

= Data Privacy and GDPR Compliance =
We provide the tools to [help you be GDPR compliant](, including:

* export/erasure of data via the WordPress Privacy Tools, including booking, event and location data
* consent checkboxes on our booking, event and location forms on the frontend
* settings to control what can be exported/erased as well as where/when to place consent requests
* sample text for your site privacy policy describing what Events Manager does with personal data

= Go Pro =
We have a premium "Pro" add-on for Events Manager which not only demonstrates the flexibility of Events Manager, but also adds some important features including but not limited to:

* PayPal, and Offline Payments
* Custom booking forms
* Individual Attendee custom forms
* Coupon Codes
* Custom booking email per event and gateway
* Faster support via private Pro forums

For more information or to go pro, [visit our plugin website](

== Installation ==

Events Manager works like any standard Wordpress plugin, and requires little configuration to start managing events. If you get stuck, visit the our documentation and support forums.

Whenever installing or upgrading any plugin, or even Wordpress itself, it is always recommended you back up your database first!

= Installing =

1. If installing, go to Plugins > Add New in the admin area, and search for events manager.
2. Click install, once installed, activate and you're done!

Once installed, you can start adding events straight away, although you may want to visit the plugin site documentation and learn how to unleash the full power of Events Manager.

= Upgrading =

1. When upgrading, visit the plugins page in your admin area, scroll down to events manager and click upgrade.
2. Wordpress will help you upgrade automatically.

= Upgrading from version 4 to 5 =

Please [read these instructions](

== Upgrade Notice ==

For those upgrading from version 4 to 5, please [read these instructions](

== Frequently Asked Questions ==

See our [FAQ]( page, which is updated more regularly.

== Screenshots ==

1. Event registration and user submitted events pending approval
2. Event ticketing and bookings forms, can be easily styled.
3. Multiple tickets with constraints and prices
4. Locations with google map integration
5. Event registration page
6. Manage attendees with various booking reports

== Changelog ==
= =
* minor JS conflict fix for those overriding the tickets admin template (or those incorrectly overriding ALL EM templates) in their theme with older HTML structure

= =
* fixed CSV injection vulnerability which can allow malicious text to be exported to CSV files and parsed by Spreadsheet
* fixed #_BOOKINGCUTOFF text date formats not getting translated correctly
* added ability to programatically add attachments to booking emails for future features
* fixed/updated casing of functions in phpMailer function calls (prefiously backward compatible),
* added reply-to headers for wp_mail emails circumventing some plugins forcing from email address fields,
* fixed email testing function ignoring sender name, encryption and autotls options
* fixed ical apple structure breaking parsing in google (and possible others)
* updated events-manager.js to replace deprecated use of delegate/bind with on/off equivalents
* added ticket ordering
* fixed editing booking tickets in admin causing validation errors on 0 values
* fixed PHP Warning generated when adding Booking Notes which prevent a redirect with WP_DEBUG enabled
* fixed Events tab on profile pages stripping last character with the BuddyPress Nouveau theme
* changed blank value to 'no location' when viewing the event bookings admin page for locationless events
* changed EM_Notices by making them JsonSerializable
* fixed (hopefully!) the elusive and hard to reproduce "variable mismatch" error when submitting new form in some rare circumstances

= =
* fixed minor typo in new email setting description
* fixed CSV booking export files turning out blank due to change in EM_Bookings::__isset() in 5.9.7

= 5.9.7 =
* 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 automatically handle language translation files
* changed boolean database fields into tinyint(1) unsigned types

= 5.9.6 =
* fixed monthly recurrence pattern issues with PHP <5.6
* fixed multiple minor PHP Warnings including Countable errors when saving a booking in PHP 7.2+
* added em_bookings_table_get_bookings_args filter, allowing ordering and more for bookings admin tables
* added Faroe Islands to countries list
* added custom dataset variable for EM_Options, added ability to save dbem_data array options in settings page
* fixed publishing issues with long multibyte character post titles in recurring events
* added em_mailer_before_send action to EM_Mailer->send() just before a mail is sent
* added em_javascript_loaded jQuery trigger
* added ability to send attachments via WP_Mail in EM_Mailer::send(), provided the transport used by it allows
* added recurring event placeholders #_RECURRINGDATERANGE, #_RECURRINGPATTERN, #_RECURRINGID
* fixed incorrectly named #_EDITLOCATIONURL and #_EDITLOCATIONLINK which were previouly (and still are) working under #_LOCATIONEDITLINK and #_LOCATIONEDITURL
* fixed pagination for calendar day archives when formatting is disabled
* added custom tabs hooks to settings page (including multisite which now has a default single tab)
* added id property to each EM_Admin_Notice that is output to screen
* optimized EM_Admin_Notices::add() so that strings are assumed to be hooks and no extra logic necessary to register the notice initially
* added em_booking_pre_calculate_price hook
* fixed potential PHP warning when editing other CPTs with galleries
* fixed some incorrect ticket end times related to saving rsvp end dates for recurring events in single ticket mode with blank end dates/times
* fixed inconsistent rsvp_end __set() compared to end and start properties,
* fixed event rsvp ending at 12:00 instead of event time when no date is supplied in single ticket mode,
* unified PHP get_post logic of start/end date/time recurrence info for tickets to reduce redundant code
* fixed invalid rsvp end date persisting unless changed when first saving an event with blank start date
* **potentially-breaking for custom code email filters** changed $output_type/$target method param in EM_Booking::email() calls to EM_Booking::output() function calls to 'email', use get_option('dbem_smtp_html') to determine whether to use HTML or not if using that format
* changed event category/tag and location lists to not include pagination in emails due to lack of predictability for pagination links
* added css tweaks to to admin single booking view and modify booking form in dashboard area
* fixed lack or confirm-redirect for no-user booking personal details editor when viewing a single booking
* fixed edit/delete links showing in post admin lists to users without the right caps (clicking these links had no result)
* added some strict_type future-proofing to EM_DateTime class
* added em_event_detach and em_event_attach filters
* fixed location coordinates not being supplied for examct Gmap pin placement when auto-complete attaching a location to an event,
* fixed double google API call when choosing an existing location via auto-complete search
* changed #_LOCATIONMAP so no 'map unavailable' messgage is shown if google maps are disabled
* fixed google maps location bubble CSS formatting issues in admin area
* changed datepicker to show relative year range dropdown selector according to currently selected date, allowing for flexible year selection
* fixed potential stored XSS vulnerability, many thanks to Tobias Fink of SBA-Research for a good eye and responsible (pending) disclosure
* fixed lack of validation when submitting tickets with higher min spaces than max spaces allowed in the ticket
* added username to exportable/viewable field columns in booking admin
* fixed embedded maps display errors when there is an & character in name or address
* fixed certain recurrence patterns with "last x of the month" skipping months
* fixed recurring events showing location meta boxes and columns when locations are disabled
* fixed event count not showing up in event profile tab
* fixed events admin table front-end showing location column when locations disabled,
* fixed location placeholders getting processed if locations are disabled
* fixed yearly recurring events not working for any value other than 1 yearly interval
* fixed precision inconsistencies between location coordinates in wp_postmeta and wp_em_locations by changing mysql FLOAT to DECIMAL and rounding numbers on $_POST retrieval
* fixed ticket prices input/display in event admin not accepting localized decimal separators
* fixed minor CSS validation errors in events_manager.css
* fixed #_BOOKINGDATE not working on first automated sent email
* fixed port assignation errors in SMTP mail settings
* pre-emptively hardened some lines of code as recommended by the wordpress security team

= 5.9.5 =
* added new Google Maps display options to help prevent cost increases
* fixed booking status emails getting resent when attempting to change status to same status
* fixed potential consent issues with editing/validating bookings made by other registered users
* fixed broken #_LATT custom field attributes for locations
* fixed #_ATT placeholders with dropdown options not selecting default option if not defined
* added em_locate_template_default filter to allow for further template overriding
* fixed certain unsanitized permalink output on admin settings page
* fixed weekly and daily recurrence creation inconsistencies when traversing DST change dates

= 5.9.4 =
* added em_rewrite_rules_array filter for final permalink rule manipulation
* fixed privacy consent blocking certain actions such as single booking button and admin-side submissions
* fixed fatal errors when showing the consent checkbox in WordPress 5.9.5 and earlier
* fixed the quick booking button not working in ajax search results
* fixed privacy policy consent form label not being translatable for multilingual sites
* fixed inconsistent date headers in certain situations with UTC manual offset dates
* fixed incorrect link to .eot dashicon file for IE11
* added anonymous submitter data to locations for new event submissions and integrated this with GDPR export/erase tools
* fixed location slug blanks when directly published from front-end via submitting an event
* added default ical and rss feed limits to avoid overloading as number of events grow
* corrected docs to include 'recurrences' search attribute
* added timezone pre-formatting to functions that produced incorrect output for timezone date placeholders
* fixed default categories not being applied for events with no categories
* fixed locations being selectable for events in other blogs within a multisite global mode when locations don't all reside on main blog

= 5.9.3 =
* added Data Privacy and GDPR features
* fixed user deletion not properly deleting events and not deleting locations if content is set to be deleted not reassigned
* added location attributes array to em_get_attributes filter
* fixed EM_MB_ICAL_WORDWRAP incorrectly not applying multibyte wordwraps if set to true
* added 'not_all_day' conditional placeholder
* made EM_Taxonomy_Terms objects countable
* fixed tag placeholders not getting parsed in event format such as #_TAGIMAGE

= 5.9.2 =
* fixed some instances where PHP 5.2 outputs incorrect times due to other plugins changing server timezones
* fixed scope issues with PHP 5.2 when calculating start/end of month dates
* fixed potential issues with manual offsets when other plugins change server timezones whilst saving events, particularly in PHP 5.2
* added EM_CACHE constant which if defined as false will disable caching
* fixed issues when changing times of an EM_DateTime object with large manual offset timezones may cause incorrect dates (fixes some weekly recurrence pattern issues)
* added notice when viewing bookings made in another language
* added booking admin table column for language used in booking
* fixed some minor PHP notices preventing event submissions/edits with a new location if display_errors are enabled
* updated EM_Notices to use new class names for notices output in WP Dashboard
* added filters for all post type and custom taxonomy arrays used in initial post type and custom taxonomy registration functions (see em-posts.php)

= 5.9.1 =
* fixed the & operator in category search attribute not working correctly in MultiSite Global Tables mode
* added fix/workaround for any code that changes the timezone from WP's UTC timezone during runtime
* fixed multisite upgrade issues with timezones
* added option to reset timezones for all blogs on multisite and also reset each blog to its individual WP timezone
* changed default subscriber capabilities so they can't submit events by default
* added option to resume failed timezone resets on multisite blogs
* added upgrade warning for multisite users who upgraded to 5.9 and had timezone update errors
* fixed (deprecated with backward compatibility) shorthand EM_Booking object properties such as 'status' not having values after 5.9 update
* fixed recurrence pattern date miscalculations on sites where a plugin/theme changes the default server timezone after WP sets it to UTC
* added gutenberg support with define('EM_GUTENBERG', true); defined in wp-config.php
* fixed new tickets not being added to previously created recurring event where bookings were previously disabled
* added tweaked EM_DateTime functionality so functions that might return false in DateTime set valid property to false before returning object for chaining

= 5.9 =
* fixes applied to merged into dev version
* added timezone support
* added new admin notice interface objects
* added new EM_Options option storage class
* fixed some PHP strict warnings regarding parent/child class method signatures
* fixed taxonomy pagination issues in AJAX (affecting tags specifically)
* fixed shortcode not getting parsed properly due to fix in attempting to parse shortcode with supplied formats
* fixed non-standard YYYY-M-D date formats not being accepted in scope arguments
* improved multisite blog update interface
* added modular update logic to admin pages for future features
* further hardening against XSS strings
* fixed non-standard YYYY-M-D date formats not being accepted in scope arguments
* fixed duplicate slug issues when duplicating events
* removed all references of create_function for php 7.2 compatibility
* fixed documented 'postcode' search attribute not filtering results by that value
* fixed event duplication not copying other plugin meta data, such as ACF
* fixed EM_Bookings::get() producing SQL error if passing an array of booking IDs
* added em_event_post_scope_meta_query filter for admin-side custom scopes
* fixed bug where blank start/end times of tickets and booking cut-offs default to 12AM instead of event start time
* fixed preview mode not reflecting new event description
* fixed broken ical permalinks for individual subcategories
* changed recurrence warning strips from green to orange/blue at top of admin pages
* added 'ticket total' column to bookings export and split 'ticket price' from 'total' booking price when exporting split by ticket type
* fixed issues with caching not getting updated other plugins data such as ACF and possibly others
* fixed issue where logged out user didn't see login feedback message on booking form under certain setting combinations
* added EM_ML::restore_current_lang and EM_ML::switch_to_lang functions
* fixed language detection of bookings not being done early enough

= =
* fixed escaping error in bookings admin table introduced in

= =
* security release fixing a potential stored XSS vulnerability (disclosure pending, props to Luigi Gubello for responsible disclosure)
* fixed scrolling issues on Google Maps
* fixed duplicate value attribute in custom fields/attributes front-end editor
* fixed shortcodes getting parsed after formats resulting in preparsed formats within shortcode
* fixed lack of booking validation filter on single booking button
* fixed minor PHP warning
* fixed duplication errors for events without bookings enabled

= =
* fixed a bug that arose in 5.8.1 where tag/category pages using formatting will still show the tags/categories list page instead

= 5.8.1 =
* fixed recurring events booking cut-off dates not being taken into consideration when creating/editing recurrences
* fixes various issues that arose in 5.8 update:
* removed use of is_main_query() and in_the_loop() within the_content filter of em_the_content due to conflicts with certain theme builders
* fixed locations without attached events not showing up in autocomplete and dropdowns for creating/editing events
* fixed multisite issues loading single event pages in MS Global mode
* fixed dropdown custom #_ATT fields not saving properly

= =
* fixed bug introduced in 5.8 which did not correctly return content in get_the_excerpt filters

= 5.8 =
* fixed category color picker and image uploader problems
* created base classes for EM taxonomies to make adding custom EM taxonomies even easier in the future,
* added tag image and color settings/data
* added sortable option for date columns of events and recurring events in the admin area
* fixed saving an event recreating ticket_meta and wiping out ML settings
* fixed multilingual translations of event in WPML not hiding/showing right meta boxes
* fixed saving multilingual translation of event overwriting original language ticket names
* changed admin headers to use new and accessible WP inline HTML structure
* fixed serialization problems for deprecated event/location attributes and attributes with multiple post meta entries for one post
* removed deprecated attributes editor from admin area as this is confusing and error prone when combined with other plugins manipulating custom fields
* fixed #_EVENTEXCERPT without arguments stripping HTML since 5.7
* added ability to list multiple categories/tags in conditional placeholders e.g. {has_tag_123,1234,tagname}...
* added #_EVENTPRICEMINALL and #_EVENTPRICEMAXALL to show prices of unavailable tickets as well
* fixed JS issues with MS Global mode and JS file limiting when displaying subsite single event pages on main blog
* fixed single initial abbreviation issues in Chinese calendars
* fixed duplicate events not being published to social networks via jetpack publicize (kudos @gnaag)
* fixed potential incompatibilities with other plugins using wp_query_reset() on category pages, preventing our page formats from showing
* fixed taxonomy archive pages returning zero results if taxonomy formatting is disabled and events are excluded from searches (WP Bug workaround)
* fixed inconsistent line ending causing warnings with PHP compatibility checker
* unified Tag and Category class functions into sets of parent class functions
* fixed PHP fatal error with BP when disabling notifications
* fixed calendar day links being incorrect if another plugin adds querystring params to permalinks
* added groupby, groupby_orderby and groupby_order arguments allowing grouping in search results for events and locations
* improved validation and sanitization of orderby arguments to avoid ambiguous field SQL errors
* added optimization to optionally join event/location tables when needed for grouped searches or if EM_DISABLE_OPTIONAL_JOINS is defined and set to true
* moved condition of when argument 'bookings' = 'user' to EM_Object so it's accessible by EM_Location too
* changed default 'recurring' argument to null so that non EM_Events searches can by default avoid the recurring conditional being generated
* added grouping to AJAX response for event_map shortcode and function resulting in performance improvements
* fixed use of get_terms via deprecated two argument method
* fixed recreation of tickets for a recurring event having wrong start/end ticket dates
* fixed custom fields with a 0 value getting deleted instead of saved
* fixed/changed - shortened SQL search conditions when filtering by array or comma list of event/location ids
* fixed escaping of apostrophes on search term placeholder
* added optimized result counts (EM_Events::$num_rows and EM_Events::$num_rows_total) in EM_Events::get() to reduce number of SQL calls
* added optimized result counts (EM_Locations::$num_rows and EM_Locations::$num_rows_total) in EM_Locations::get() to reduce number of SQL calls
* changed as a result of the above two additions above we tweaked various event list areas to half number of SQL queries run per list
* added no_results_msg argument to EM_Events::output() functions for custom 'no events found'
* added location_status and event_status search arguments to event and location searches respectively
* fixed column alignment issues when using quick edit for events in wp dashboard
* tweaked excerpt filters and reduced redundant calls to our the_content filters (reducing overhead)
* changed event page the_content loading so it only shows when in_the_loop() and is_main_query() is true
* fixed issues with WordPress SEO plugin breaking the wp editor front-end
* added event list default sorting options to locations, tags and categories
* added em_wp_is_super_admin() replacing is_super_admin() in anticipation of its deprecation
* changed and optimized postmeta saving process to reduce number of rows by up to 80% per event,
* optimized events table to save NULL values when possible
* changed/removed unused event_category_id field from events table
* added em_object_can_manage filter
* fixed nested attributes such as {cond}#_ATT{name}{/cond} not being parsed properly
* fixed some installation SQL PHP errors/warnings
* fixed capability mapping problems if revisions enabled for events or locations
* added WEBCAL placeholders to events, locations, categories and tags (e.g. #_EVENTICALLINK > #_EVENTWEBCALLINK)
* removed unnecessary SQL queries for undeclared wp_options reducing number of queries made per page load
* tweaked settings page textarea elements to be wider
* added (possibly temporary) EM_FORCE_RECURRENCES_SAVE constant forcing status save for when recurrences change status,
* fixed EM_Event::set_status_events() which was not working correctly and now also runs a em_event_set_status_events filter
* fixed recurring events warning text not appearing in front-end editor if first submission produced validation errors
* performance improvements to EM_Bookings and EM_Ticket objects by preventing pre-loading of all bookings on instantiation and when querying availability
* added cache optimization for event and location loading,
* improved optimized loading of EM_Location via em_get_location() by checking globals first,
* changed bookings/tickets template for event editor to avoid loading all bookings for counting purposes
* added $include_adjustments argument to get_price_pre_taxes and get_price_post_taxes for calculation of prices without discounts/surcharges (those making use of the em_booking_get_price_post_taxes and em_booking_get_price_pre_taxes filters should check for this passed argument in their custom code)
* fixed bug where event categories saved via quick or bulk edit in multisite global mode aren't reflected in subsite event lists filtering by that category
* fixed events created before changing to multisite and enabling global mode not displaying images via placeholders
* fixed bug in filter em_ticket_get_post where function argument $post was not passed on
* improved taxonomy color retrieval so it makes use of caching
* improved/optimized deletion of multiple bookings and tickets at once if belonging to an event
* fixed my_bookings shortcode outputting content at top of content irrespective of where it is located within content
* fixed invalid recurrence ticket start/end cut-off date/times if both are not set for the recurring event
* fixed bug where ticket start/end dates cannot be unset in recurring events

= 5.7.3 =
* fixed previous meta not getting deleted from recurrences resulting in non-saved information such as a changed featured image or location
* fixed newly submitted recurrences first saved in draft or pending mode not creating new events without a reschedule
* fixed export settings button not working in MultiSite
* fixed CSS issue in search form advanced field dropdowns on firefox
* fixed PHP warning when displaying locations and events map via shortcode (kudos @Beee)
* fixed minor PHP warning on category admin pages where image isn't defined (kudos @Beee)
* fixed booking admin 'Add Note' button not being translatable
* added fifth day of month in recurrences pattern
* added ability to change event times on recurring events without recreating recurrences

= 5.7.2 =
* fixed subsite events in MS Global mode not being able to save new events and resulting in orphaned entries in wp_em_events table
* added admin tool to allow removal of orphaned events in wp_em_events database table
* improved detection and handling of orphaned events when being displayed

= 5.7.1 =
* fix for wierd headers PHP error due to corrupted * fixed minor PHP warning on settings page

= 5.7 =
* added em_events_admin_args filter allowing modification of event search arguments
* removed jQuery UI localize files for the datepicker in favor of WP 4.6 native localization
* fixed potential bug where modified ticket spaces aren't saving correctly when editing a booking
* added is_user_attendee, not_user_attendee and variations of both proceeding with _0 or another number representing booking status
* added edit/view shortcut links for each event location in events list admin area
* fixed conflict with BuddyPress Group Extras and potentially other plugins when one or more of our list pages aren't assigned a page (e.g. locations page) resulting in a blank page
* fixed ical feed not serving wrapped content lines,
* added EM_ICAL_APPLE_STRUCT constant to allow ommitting of X-APPLE-STRUCTURED-LOCATION lines in the ical file
* fixed formatting issues with ical X-APPLE-STRUCTURED-LOCATION line
* fixed instances where locations or events automatically creating a post slug if needed when published
* fixed location image display issues on other blogs when in MultiSite Global mode
* corrected and updated docs
* fixed switch_to_blog() being used instead of restore_current_blog() in buddypress/bp-em-core.php (props @mikegillihan)
* fixed search form CSS inconsistencies for Twenty Seventeen theme
* fixed locations map breaking when provided with object versions of JSON response (such as with WPML compat add-on)
* updated maps google library to always use most stable version
* fixed issues when creating MS Global Events programmatically
* moved some logic out of the EM_Event->output() function into their own function for easier future use in templates
* fixed google calendar links not including full location address
* added an import/export settings option in settings page
* added ability to use post_id in calendar shortcode and PHP functions
* added has_location and no_location to event search attributes
* added [events_map] shortcode which searches by event rather than location
* changed behaviour of zooming when mouse is over a map so a click is required first to avoid catching whilst scrolling the page
* fixed all errors and warnings for PHP 7 and others highlighted by PHP Compatibility Checker plugin
* added decimal parameter to get_tax_rate functions which allows fixing of minor PHP warning when tax is set to 0
* fixed filter typos and _get_sql positions in EM_Bookings::get() and EM_Locations::get()
* removed unnecessary storage of _post_id in postmeta for recurring events
* fixed bug where tickets aren't deleted with event
* fixed incompatibility with WP Fastest Cache for bookings on cached pages
* fixed EM_Categories not removing categories if none are selected when resaving an event
* added em_get_events_admin_url() function
* added major improvements to recurring events including ability to duplicate templates and also make changes without deleting previous recurrences,
* changed various event editor templates to accommodate new recurring event changes
* changed no-user bookings feature to not require a dummy user
* changed no-user bookings so previous bookings appear correctly regardless of whether NU bookings is enabled or disabled
* tweaked PHP Mail sending method to go through WP PHPMailer class for better encoding
* fixed overly aggressive filtering of get_the_date and get_the_time filters (kudos @boonebgorges)
* fixed missing map markers array variable to be supplied in JS hook em_maps_locations_hook (kudos @raruto)
* changed booking discount php functions into price adjustment functions which will now allow for surcharges to be implemented
* fixed guest submissions with bookings enabled producing false permission errors instead of a confirmation
* fixed/updated media uploader JS interface for category image
* added more booking price filters to individual functions
* fixed minor nuance where upcoming events scope filter not selectable on mobile view
* fixed JS not being loaded automatically on events list when JS performance loading enabled
* fixed regex matching preventing use of a #_LATT attribute within an #_ATT default value bracket
* fixed confirmation message not showing for event duplication
* added duplicate shortcut link on dashboard edit event page
* fixed issues with selection of Sunday on monthly recurrences and the generated pattern summary
* changed/fixed events_list_grouped using date format for sub-section titles from settings page if no date_format supplied regardless of grouping mode
* added em_scripts_and_styles_public_enqueue_pages filter for custom pages to automatically include EM script/styles when limiting for performance is enabled
* fixed PHP non-object notices on certain non-EM dashboard pages
* changed booking form scrolling JS to scroll to booking message feedback element and added EM_BOOKING_MSG_JS_OFFSET constant to allow adjusting the offset in wp-config.php
* fixed redirect link on booking form login not taking into account SSL pages
* added #_EVENTEXCERPTCUT to allow cutting of both excerpts and post content
* changed event all day times to start at 00:00:00 and end at 23:59:59 when saved (kudos @cliffpaulick)
* changed default search form settings behaviour to ignore country filtering if search option is not enabled
* fixed scheduled recurring events not publishing recurrences
* improved google maps JS for multiple events/locations maps and auto-zooming of included locations (kudos @benklocek)
* fixed minor php warning on user profile page
* tweaked booking JS to allow a redirect variable passed on with a successful response
* fixed 'Bookings' header not being translated when formats are disabled and booking form is added just after content
* fixed ticket availability status indicator showing false to admins when ticket is restricted to guests
* added get_total_paid function (mainly for hooking purposes in Pro add-ons)
* added support for Google Maps styles via services like the Google Maps Style Wizard or Snazzy Maps

= =
* fixed search forms disappearing in latest update when Styling Options for search forms are turned off (props @factchecker)

= 5.6.6 =
* improvements to ical formatting, including static/unique UIDs, more accurate locations with geo coordinates, categories and featured image
* replaced code using stripslashes() with wp_unslash() (kudos @webaware)
* removed use of on settings page
* tweaked event search form elements and events list table to be ADA compliant
* added $EM_Ticket_Booking to em_tickets_bookings_add filter arguments
* removed translations of weekdays within EM and using WP translations instead,
* changed calendar templates to stop using ucfirst() to uppercase month first letters since it breaks some languages and the languages that need it don't capitalize their months anyway
* fixed anonymous event submitter info not showing in recurring event admin area
* fixed wrong nav id in BuddyPress (kudos @lyevalley)
* fixed 'no location' checkbox not remaining checked if event submission returns a validation error
* tweaked templates/forms/event/location.php and added some extra output sanitization
* fixed 404 errors in calendar links to eventful day list for a specific location
* fixed syncing of tables when WP uses utf8mb4 collation which causes errors when saving emojis in post content
* fixed WP 4.6 PHP warnings and featured image problems when using a theme that limits specific CPTs to use thumbnails
* fixed action typo in EM_Ticket::get_post() from em_location_get_post_pre to em_ticket_get_post_pre
* fixed location not showing up in admin area within dropdown if previously assigned to an event but not available to user due to permission changes

= 5.6.5 =
* added option to add Google Maps API key
* fixed category image uploader not working properly on some specific setups
* fixed display issues of first/last names mixing middle names in booking admin tables under no-user mode
* fixed #_TAGSLUG not being parsed
* fixed blank space in email triggering validation errors when booking
* fixed 'view bookings' ticket link pointing to back-end when on front-end

= 5.6.4 =
* fixed WP FullCalendar (versions using FC 2.x library) not showing events outside current month
* fixed long events not showing on last day in WP FullCalendar
* fixed event category and tag pages 404ing when slugs match taxonomy slugs and these pages aren't parents of events page
* fixed image upload buttons not working properly on category add/edit pages

= 5.6.3 =
* fixed events disappearing from calendar with WP FullCalendar plugin
* fixed PHP warning for delete booking when a user can't manage booking
* removed our EM_PHPMailer class and started using the one shipped with WordPress
* added %passwordurl% placeholder for new user registration email template
* added check for whether categories are enabled in many areas of code potentially avoiding a array_map PHP notice
* fixed preview mode duplicating tickets
* fixed widget formats stripping certain HTML elements
* fixed erratic date picker range behaviour when adjusting a start date later than the end date
* fixed original image getting deleted when modifying duplicated event image
* fixed orderby not including event_date_created and event_date_modified since 5.6.2
* fixed PHP warning when calling #_ATT to a non-existent attribute
* changed event debug meta box to display when WP_DEBUG_DISPLAY is also true rather than just WP_DEBUG
* fixed front-end submission false validation errors when submitting events with bookings enabled
* changed headers to new h1 standard on WP Dashboard pages
* fixed bookings admin viewer table not showing specific ticket bookings on front-end
* fixed ML hooking into em_event_save_meta and messing up the internal hook pointer by triggering it again
* fixed translated options PHP fatal error in rare occasions/setups
* fixed deprecated get_currentuserinfo notice in WP 4.5
* fixed PHP 7 division by zero warning
* fixed PHP 7 "array to string" notice
* fixed PHP 7 issues with EM_Ticket validation
* fixed grouped events list not showing long events on each group provided limit=0 is also supplied
* fixed apostrophes not passing email validation
* fixed buddypress fatal error when booking with notifications disabled,
* fixed buddypress activity stream items being created twice for new bookings
* fixed booking admin notes not being added in the front-end
* updated google maps api version and removed deprecated sensor parameter
* fixed searches not working for search terms containing apostrophes
* fixed blank settings pages due to 4.5 code changes to wp_get_referer()
* added em_bookings_deleted action which will execute when one or more bookings are deleted
* added em_bookings_delete filter for when a group of bookings are deleted with event(s)
* fixed EM_Bookings->delete() not deleting bookings properly
* deprecated use of EM_Event->delete_bookings() and EM_Event->delete_tickets() in favor of EM_Event->EM_Bookings->delete()

= 5.6.2 =
* changed translation gettext domain from dbem to events-manager inline with new translation features
* fixed EM_CSV_DELIMITER not being included in headers, added filter em_csv_delimiter to override EM_CSV_DELIMITER
* added wpfc-more class to allow hiding of time on 'more' link for WP FullCalendar
* fixed booking cut-off time not working if cut-off days is 0 or empty
* fixed front-end event submission form permission issues for new recurring events when publish cap is enabled but not edit_others and delete_others
* fixed Norwegian incorrectly translated placeholders
* fixed custom decimal separator not used in tax rate display
* minor js fix which fixes a grecaptcha related error notice
* fixed recurrence_byday db value saving as null for weekly Sunday events (kudos @giventofly76)
* removed _event_date_created and _event_date_modified from the postmeta table as these are inaccurate, use the records from the wp_em_meta table or directly via EM_Event->event_date_created or EM_Event->event_date_modified
* changed settings/admin capability from list_users to manage_options
* added EM_DISABLE_AUTO_BOOKINGSFORM which prevents booking form showing below post if format overriding disabled
* fixed WP 4.4 error on front-end event submission form
* fixed PHP notices in WP 4.4 when categories are disabled
* fixed Multiple Booking Mode bug in Pro introduced by WP 4.4 allowing NULL db values
* fixed like_escape debug warning on search form
* fixed twenty fifteen/sixteen CSS conflict hiding confirmation messages
* added bookings closed message
* updated all languages included typo fixes and added Arabic, Australian and Canadian English

= 5.6.1 =
* fixed no arguments being passed onto em_get_post_meta_pre and em_get_post_pre
* fixed minor PHP warning when viewing settings in paged tab mode
* fixed em_event_save_pre and em_location_save_pre firing before the get_post and validate functions/filters via the save_post action in the WP dashboard
* fixed EM loading jQuery UI css when already loaded by another theme (if they enqueue it with id jquery-ui)
* fixed bug introduced in 5.6 where some error/confirmation notices aren't showing up on page loads
* fixed mistaken update of Hungarian language files with German
* fixed EM_Location::has_events() providing false negatives
* added has_events and no_locations conditional location placeholders
* fixed actions column throwing off CSV column spacing since v5.6
* fixed orderby request parameter being ignored in EM_Bookings_Table
* fixed booking_date not being a valid orderby value for EM_Bookings
* fixed recurring events booking cut-off time resetting to 12AM when no days value is given

= 5.6 =
* fixed potential XSS and a potential code injection vulnerabilities (props to the team at
* updated Czech, Danish, Dutch, English (UK), Spanish, Estonian, French, German, Hungarian, Italian, Japanese, Norwegian, Persian, Polish, Portuguese (Brazil), Russian and Slovenian language files
* added Greek and Slovak languages
* added MultiLingual abstract layer rewritten and various modifications throughout EM to enable multilingual interfacing with plugins like WPML
* created abstract multilingual layer classes, a complete rewrite and overhaul
* fixed em_events_get_bookings filter not allowing replacement of EM_Booking object
* changed booking form placeholder template to reference EM_Bookings->event_id rather than EM_Event->event_id
* fixed wp_insert_post_data not correctly loading/validating the event associated with the actual post id supplied
* changed ML globe icon to use the globe dashicon
* fixed attributes not being translatable as well as porting new attribute values added to original being added to other language if no translation exists
* added single-tab view for options page if number of ML languages add more than 1000 fields to submit
* fixed some minor PHP warnings for edge cases
* fixed bp deprecated warning in debug mode
* added long_events default option to small and full calendar sizes on settings page
* fixed erroneous month returned when using functions and the 12th month (kudos @althie)
* removed a console.log function from the JS delete ticket function
* removed the forced 50px width/height of the full calendar day cells which breaks the calendar in twenty fifteen
* fixed global $EM_Event not loading before add_admin_boxes in admin area
* improved/simplified code for front-end image uploads handling which now uses media_handle_upload
* fixed #_CONTACTNAME showing anonymous events user rather than the guest submitter name
* fixed MS Global recurrences not saving global category info
* fixed recurring tickets triggering errors if only start date is defined
* fixed private locations searches not including eventless private locations
* changed some deprecated is_main_blog() functions to is_main_site()
* fixed JS DOM conflict by naming submit buttons 'submit'
* fixed 'Email Sent' being shown when no emails sent during booking status change
* fixed em_wp_the_title() unnecessarily filtering all the_title instances on event, location and EM pages rather than just the main title
* fixed long_events=0 not being considered for the WP Fullcalendar plugin
* fixed issue where when saving via WP admin the global $EM_Event object doesn't refresh all data before passing onto save_event filter
* added em_rewrite_rules_array_events filter for permalink rewrites
* fixed long events argument not taking in WP FullCalendar
* fixed filters em_bookings_table_rows_col and em_bookings_table_rows_col_{col_name} not supplying $object which could be an EM_Ticket_Booking object
* modified EM_Bookings_Table::get_row() to apply em_bookings_table_rows_col for every column
* fixed minor admin page bug where JS can clash with uses of pseudo URLs when certain plugins activated
* fixed EM_Calendar links clashing with WPML and potentially other plugins that manipulate urls
* added some esc_ functions to calendar links and templates an extra safety precaution
* added EM_CSV_DELIMITER constant check to allow overriding CSV delimiters
* added em_booking_output_event filter
* improved booking email sending so contact and extra admin emails sent in one go rather than in separate send functions
* added em_booking_js hook with intention of replacing em_gateway_js hook in the distant future
* fixed booking price rounding issues in EM_Booking::get_price()
* fixed event save_post hook issues when a new location CPT is created within it, which fixes ACF plugin saving issues
* fixed WPLANG php notice on installation/update
* fixed 'Manage Persons Bookings' page not filtering properly for non-admins
* fixed some false positive/negative results using EM_Object::can_manage()
* added additional db indexes for performance improvements
* fixed EM_Events::get() returning blank events when supplied an array of event IDs
* fixed advanced search & ticket editor advanced options toggle conflicts with twitter bootstrap-based themes
* updated classes and widgets to use PHP 5 constructor methods in lieu of WP 4.3 update
* fixed BP event duplication errors for non-owner group admins
* changed and cleaned up some table layout issues in templates/buddypress/group-events.php
* fixed current view/scope link not being bold in front-end events editor
* fixed saving recurrences not deleting currently trashed recurrences
* fixed location archives not adhering to sorting defined in settings page
* fixed users without the manage_booking capability being able to create events with bookings in the admin areas
* removed auto-insert of ul tags if no format_header or format_footer supplied in taxonomy list shortcode
* fixed some format, format_header and format_footer attributes not being output for custom value combinations
* fixed misspelt action em_front_event_form_guest (em_font_event_form_guest depricated, will remove in future)
* fixed custom taxonomies not being considered as default search args to make search form integration easier
* changed templates/templates/search/categories.php so default value is 0 rather than -1
* changed incorrect em_event_get_post filter applied for EM_Event::get_post_meta() which is now em_event_get_post_meta
* added em_event_get_post_meta_pre and em_event_get_post_pre actions
* fixed SQL error when searching non-existent taxonomy values or taxonomy names containing a hyphen
* fixed change of event ownership to anonymously submitted event not showing new owner contact information
* fixed soon-to-be deprecated templates/forms/ticket-form.php not including overridden forms/event/bookings-ticket-form.php file
* added em_timepicker_options JS trigger for altering time picker options
* fixed strict PHP error in templates/forms/bookingform/ticket-single.php
* added em_enqueue_admin_styles action and moved em_enqueue_admin_scripts action after em script is added
* added Russian Ruble to currency list
* fixed errors with some booking edit links on the front end
* changed use of deprecated function bp_core_add_notification to bp_notifications_add_notification
* added EM_Event::duplicate_url and changed templates with duplicate urls to use this so ML events will duplicate original translation
* fixed some potential validation errors when hooking into em_location_get_post_meta
* added admin global $EM_Location so it now becomes global during add_meta_boxes action
* added em_category_taxonomy_template and em_tag_taxonomy_template actions
* updated jQuery UI CSS files

= =
* fixed minor DOM XSS vulnerability

= 5.5.7 =
* fixed some more XSS vulnerabilities

= 5.5.6 =
* fixed a security vulnerability

= 5.5.5 =
* fixed booking cut-off time not being editable after event is saved
* fixed taxonomy search arguments not being applied on calendars and ajax lists,
* changed taxonomy search argument - not cleaned or converted to array during get_default_search() to prevent pagination link errors,
* fixed calendar pagination link argument comparison issues due to loose type comparison,
* changed calendar default arguments so scope=false and limit=settings_value (should have no effect - mainly future feature-proofing)
* fixed issue with weekly sunday only recurrences not validating
* fixed BP unregistered actions in admin area
* added new admin booking status emails to prevent confusion when pending/confirmed statuses are changed
* updated POT file

= 5.5.4 =
* fixed no events message for #_LOCATIONNEXTEVENTS and similar showing header/footer formats for an events list
* updated all language files including POT file, added Norwegian, Persian and Turkish
* fixed/improved pricing to include 4 decimal precision for better tax rounding with large numbers,
* fixed/changed incorrect filter em_event_validate to em_ticket_booking_validate in classes/em-ticket-booking.php
* added new jQuery hooks for altering map and marker options
* fixed search form using default country even if advanced search settings are disabled
* fixed code to prevent vaultpress false-positive security warning
* fixed duplicate event meta on duplication of event
* increased pricing to 6 decimal precision,
* added get_price_with_taxes function to EM_Ticket_Booking
* fixed multisite issues when creating events with conflicting post IDs on other sites
* fixed MS Global Mode permalink issues with cross-site locations and optimized cross-site event permalink creation
* fixed preview mode duplicating tickets whilst in draft status
* added event and ticket cut-off date support to recurring events
* fixed SSL/JS MIME related issues when cross-AJAX calls are made between HTTP/HTTPS
* fixed same-day event ordering issues in WP FullCalendar integration
* added admin menu EM dashicon
* added multi-level taxonomy condition searching so seperating ids/slugs by & will force an AND search as well as the traditional comma for OR searches
* fixed custom taxonomies not being saved from recurring events to recurrences
* added page_queryvar search attribute which allows for independent paginated shortcode lists via a custom page number id
* fixed HTML entities breaking CSV output in booking exports
* fixed recurrences validation when no days are supplied in weekly pattern
* improved event time validation to catch variations without help from the timepicker
* fixed taxonomy theme templates not overriding pages due to our formats
* fixed some typos on settings page
* improved styling of options page to make option sets clearer to distinguish
* added excerpt formats to events and locations and appropriate settings
* fixed BP private group admins being able to directly publish private group events whether or not they have publish caps
* changed minimum characters to autosuggest location from auto-completer on 'near' search to 2 characters
* removed usage of TimThumb
* changed thumbnail generation to optionally allow for full-sized images scaled by HTML attributes and adding querystring arguments for use with Photon by JetPack image scaling
* fixed typo for single ticket mode setting explanation
* fixed em_events_list_grouped not returning a string for output
* fixed order attribute not accepting lowercase asc/desc options
* fixed pagination issues when changing row limits on bookings table
* added distance options to search form on settings page,
* fixed distance not searching in km
* fixed DST miscalculations with google add-to-calendar link
* fixed ical descriptions not accepting \n characters
* improved translation text for event and location form submit buttons
* improved events and locations widgets so li wrapping tags can contain classes as well as adding sanitization, cleaning up etc.
* fixed 'awaiting payment' statuses not showing edit/approve links in EM Free
* fixed trashing blank recurrence creating unexpected results
* fixed escaping issues on punctuations for text searches on some servers
* fixed template templates/tables/locations.php to not show delete options if user doesn't have the capability
* improved country search attribute by adding ability to search multiple countries at once by using comma-delimited strings
* fixed ticket price formatting resulting in thousand separator triggering validation errors when updating event
* fixed private events showing up on global locations map
* improved loading of EM_Booking SQL to initially exclude em_meta and join the table
* fixed booking notes not being deleted in em_meta table along with booking
* changed booking email notifications so admins get an email for every action performed
* fixed duplication of event not copying over data stored in the em_meta table

= =
* added #_TAGNOTES
* fixed forced owner event/location searches when logged in as subscribers and in AJAX requests where owner attribute is false
* fixed minor php warning

= 5.5.3 =
* changed scopes of various functions to static and various other related adjustments to fix PHP Strict errors
* increaded minimum required WP version to 3.5
* WP_Mail is now default mail transport method
* updated Swedish
* fixed issues with editing no-user name with pro custom forms
* fixed bug preventing redirection back to current page from the booking form login form
* fixed has_tag and has_category conditionals not being regognized when dashes are used
* added default color for categories
* fixed default color problem for FullCalendar
* fixed submit form not showing success message in FireFox
* fixed potential error in EM_Ticket::is_available() not checking event cut-off date,
* fixed single ticket mode new admin UI not showing ticket end date if cut-off date already exists
* fixed events_list_grouped shortcode always displaying pagination links even if disabled
* fixed update from 5.4.1 not creating new user email template in settings
* fixed "test email settings" button using saved settings rather than newly entered test settings
* fixed minor php warning if no attachment info supplied to EM_Mailer
* removed get_current_blog_id() function as this was for < WP 3.1 support
* fixed buddypress subnav menu items showing logged-in user links rather than displayed user (props to Maxime Lafontaine)
* added *_get_url*_get_ical_url and _get_rss_url for em_category em_tag em_location and em_event object functions
* fixed filter em_booking_calculate_price not assigning filtered value to booking_price property
* fixed problems due to lack of late static binding in get_post_search and get_pagination_links functions
* changed object get_post_search functions to accept all values from get_search_defaults
* fixed pagination problems when searching grouped events lists and ajax disabled
* changed - temporarily silenced 'scope' when 'eventless' is used on location list arguments as no results appear with both used at once
* changed search html input field to use placeholder attribute if available in browser like with Geo search
* added number_of_weeks argument to EM_Calendar to allow fixed week tables
* fixed WP FullCalendar not showing long events in following months
* fixed WP FullCalendar not showing all events in 6th week if current month ends 5th week
* added RSS feed ordering and scope options in settings page
* fixed no cut-off date assigned to event when in single ticket mode and no end date/time defined
* fixed JS/BuddyPress bug when clicking to delete an event within the BP profile area
* fixed default events AJAX search not using default event list scope if no scope search supplied
* updated POT file along with Swedish and Polish translations
* fixed saving recurrence tempate not saving ticket role restrictions to recurrences
* fixed PHP error when tags are deactivated
* added functionality for searching multiple event/location owners in search attribute 'owner',
* fixed bug with pagination showing
* fixed quick edit not updating location author index table
* fixed closed message showing instead of login message to guests if registered-user tickets exist for event,
* fixed ticket availability calculation issue with member or guest only tickets when displaying tickets to user
* replaced usage of archive_template and category_template filters with taxonomy_template for both taxonomies, props to @avir673 and @greenshady
* added option on settings page and a search attribute 'header_format' for formatting groupby headers
* changed checkboxes html so text and box is wrapped in a label field
* fixed js date picker so change now triggered for end date fields when selected start date changes the end date value
* fixed display of duplicate events and incorrect cross-site events when in MS Global mode
* fixed incorrect page counts in some MultiSite Global instances by making use of SQL_CALC_FOUND_ROWS instead of COUNT()
* fixed rogue closing div on front-end events and locations

Events Manager Plugin
Price: FREE

Events Manager is a full-featured event registration plugin for WordPress based on the principles of flexibility, reliability and powerful features!

View Cart