My Calendar

Wordpress Plugin
Download latest -



Download Stats

Today 118
Yesterday 210
Last Week 1,282
All Time 992,929
Banner 772x250

My Calendar does WordPress event management with richly customizable ways to display events. The plugin supports individual event calendars within WordPress Multisite, multiple calendars displayed by categories, locations or author, or simple lists of upcoming events.

Easy to use for anybody, My Calendar provides enormous flexibility for designers and developers needing a custom calendar. My Calendar is built with accessibility in mind, so all your users can get equal access and experience in your calendar.

Premium Event Management

Looking for more? Buy My Calendar Pro, the premium extension for My Calendar to add support for user-submitted events, integration between posting and event creation, and import events from outside sources.

Selling event tickets?

Do you sell tickets for your events? Use My Tickets and sell tickets for My Calendar events. Set prices, ticket availability, and sell multiple events at the same time using My Tickets.


  • Calendar grid or list views of events
  • Monthly, weekly, or daily view.
  • Mini-calendar for compact displays (as widget or shortcode)
  • Widgets: today's events, upcoming events, mini calendar, event search
  • Customize templates for event output
  • Limit views by categories, location, author, or host
  • Editable CSS styles.
  • Extensive support for recurring events.
  • Edit or add single dates in recurring events
  • Rich permissions handling to restrict access to parts of My Calendar
  • Email notifications when events are scheduled or drafted
  • Post to Twitter when events are created (using WP to Twitter)
  • Manage locations
  • Fetch events from a remote database. (Sharing events in a network of sites.)
  • Multisite-friendly
  • Integrated help page
  • Shortcode Generator to create customized views of My Calendar


My Calendar is designed with accessibility in mind. All interfaces - both front and back end - are tested with various assistive technology. The plugin includes features for indicating the accessibility services available for events and at physical venues, as well as providing access to the content for users with disabilities.

What's in My Calendar Pro?

  • Let your site visitors submit events to your site (pay to post or free!).
  • Let logged-in users edit their events from the front-end.
  • Create events when you publish a blog post
  • Publish a blog post when you create an event
  • Advanced search features
  • Responsive mode
  • Import events from .ics or .csv formats via file or URL.
  • REST API support for sharing events between multiple sites.


Visit Wordpress Translations to check progress or contribute to your language.

Translating my plugins is always appreciated. Visit WordPress translations to help get your language to 100%!

Releases (81 )

Version Release Date Change Log 2022-11-06
  • Bug fix: minified mcjs.min.js was invalid in 3.3.24, breaking jump navigation selector.
3.3.23 2022-09-27
  • Bug fix: Don't set to default location if location already set.
  • Bug fix: Add stopImmediatePropgation to click handlers to prevent other script's scroll effects
  • Change: Remove .mcajax class as unneeded.
3.3.16 2022-06-08
  • Bug fix: Incorrectly passed list type caused templates to encode html entities.
3.3.15 2022-06-07
  • Bug fix: CPT base values shouldn't allow URL-invalid characters.
  • Bug fix: Improper variable type checking in mc_settings checkboxes.
  • Bug fix: Unset search variable in auto-generated display hashes.
  • New filters: Filter event object. (multilanguage support in Pro)
  • New filter: Filters on single event HTML. (multilanguage support in Pro)
  • Add: language attribute in main, today, and upcoming events shortcodes.
3.3.12 2022-04-21
  • Bug fix: Find title and find event should use nearest event, not first event.
  • Bug fix: Title replacement used event ID improperly if mc_id not passed.
  • Bug fix: Seed GUID with home_url.
  • Bug fix: Don't throw warnings if host/author ID no longer exists.
  • Bug fix: Handle recurring event codes if passed from event importer.
3.3.11 2022-04-05
  • Bug fix: Modifying a category didn't refresh the icon SVG for that category.
  • Bug fix: Contextual help should be viewable with 'view help' capability.
  • Bug fix: Allow img in event title templates.
  • Bug fix: 'all' category limit could be cast to an integer, breaking links.
  • Change: text changes to location select label for clarification of purpose.
  • Change: allow mc_bulk_actions() to take a second argument with events to modify.
3.3.10 2022-03-24
  • Bug fix: aria-current not rendered on event manager filters.
  • Bug fix: published filter not marked as current by default.
  • Bug fix: Cache allowed sites for CORS headers on multisite networks.
  • Bug fix: fread error if no stylesheet defined.
  • Bug fix: Extra closing div in single-day view.
  • Bug fix: Better support for local user time.
  • Change: Wrapper function for My Calendar time format: mc_time_format()
3.3.9 2022-02-25
  • Feature: Ability to merge duplicate locations.
  • Bug fix: New locations created with events were not properly saved with the event, leading to possible location duplications.
  • Bug fix: Add location to table should not be checked when copying an event.
  • Bug fix: Possible fix to meta permissions.
  • Bug fix: Fall back to non-fulltext queries if search term below length limit.
  • Bug fix: 'search' nav item not rendering.
3.3.8 2022-02-14
  • Bug fix: Generated a duplicate location if event with location unselected location.
  • Bug fix: Setting an event's all day label text to blank should not be overridden by defaults.
  • Bug fix: Delete single event from front-end pointed to wrong destination.
  • Bug fix: Missing help text for copying events.
  • Change: Minor text change to empty location value.
  • Change: Clear list items in list view (CSS)
3.3.7 2022-02-02
  • Bug fix: Fixes location admin verification error in manage locations list.
3.3.6 2022-01-28
  • Bug fix: Event template previews should only show to users who can use them.
  • Bug fix: Category key icons should show background colors when configured.
3.3.0 2021-12-13

Backend Changes:

  • Replaced date picker with the Duet Design Systems accessible date picker.
  • Accessibility & usability improvements to adding additional occurrences to an event. (DB change)
  • Add support for custom fields on locations. See demo at Github
  • Extensive back-end user experience changes.
  • Link location title to edit screen in location manager
  • Improve checkbox labeling in event manager.
  • Improve button labeling in nav ordering.
  • Add row actions to Location manager.
  • Add support for custom columns in location manager.
  • Bug fix: use aria tab panels properly in settings.
  • Removed upgrade cycles & associated code for upgrading from version 2.3.x (last release in 2015.)
  • Support aria-sort on sortable tables.
  • Locations support both descending & ascending sort.
  • Bug fix: pagination when sorting in event manager.
  • Update settings configuration for default calendar URL.
  • New setting to control whether plugin settings are removed on uninstall.
  • Text changes for clarity & simplification
  • Change 'Short Description' to 'Excerpt' for clarity
  • Collapse 'Event Groups' and 'Events List' into a single screen.
  • Inline help pop-ups
  • Show event count for category links.
  • Add settings manager to My Calendar primary view page.
  • Updated recurring events input method.
  • Add category during event creation.
  • Make event bulk actions a dropdown.
  • With Google Maps API, auto query lat/lon data for locations.
  • Add calendar view for navigating events in admin.
  • Simplify featured image support.
  • Use checkboxes to select categories in widgets & shortcode generator.
  • Show warning if screen has unsaved changes
  • Template tag & event template previews.

Bug fixes:

  • Bug fix: Deleting a location from the location manager should not send user to the location editor.
  • Bug fix: row action links not properly labeled.
  • Bug fix: row action links not becoming visible on focus.
  • Bug fix: PHP warning on installations without saved locations.
  • Bug fix: Screen options weren't able to retrieve user settings correctly.
  • Bug fix: Event manager displayed recurring event options on single event editing screens.
  • Bug fix: Form overflows in responsive views.
  • Bug fix: Need breaking container in map bubble after location name.
  • Bug fix [a11y]: Ensure focus isn't loss in sortable lists; announce change via wp.a11y.speak.
  • Bug fix: If no previous or next event, generated numerous PHP errors.
  • Stylesheet previewer in Design manager.
  • Only show "special scheduling options" when relevant.
  • Add Help tab to explain statuses.
  • Add color picker to CSS variable UI

Frontend changes:

  • Add front-end location view.
  • Update default custom templates.
  • Support filtering by multiple locations in calendar shortcodes or by filter.
  • Change: use a stateful heading for all calendar views.
  • Change: Support AJAX navigation on date select form.
  • Bug fix: Override custom select styles from Twenty Twenty One
  • New: recurring-event classes in event lists.
  • Rewrote Google Maps scripting
  • New SVG category icons, sourced from Font Awesome (
  • New default stylesheet: twentytwentyone.css
  • Individual display settings for different calendar views
  • Creates demo content on initial installation.
  • Enable pretty permalinks by default on new installations
  • Add accessibility fields as a default event output.
  • Removed RSS feeds.
  • Always show event title in pop-up.
  • Update default date/time formatting.
  • Support search in calendar navigation.
  • Support category dropdown in calendar navigation.
  • Support location dropdown in calendar navigation.
  • Support accessibility feature dropdown in calendar navigation.
  • Support ld+json data for events and locations.
  • Changed heading structure for main calendar view.
  • Add event number to list view and event number hint in mini view.
  • 'Show recurring' flag in upcoming events list.
  • Upcoming events list should not wrap empty value in ul
  • New default stylesheet

Developer Changes:

  • New actions: 'mc_event_happening', 'mc_event_future', 'mc_event_over' executed whenever an event is compared to the current time, usable for automatic transitions and notifications.
  • Filter: 'mc_output_is_visible' to determine whether a given display feature should be shown on calendar.
  • Disable sending email notifications for Spam events. Add action to optionally handle spam notifications.
  • Remove the process shortcodes option. Shortcodes can be disabled using 'mc_process_shortcodes' filter.
  • Published documentation to
  • New filter to add custom permissions. 'mc_capabilities'
  • New filter for event details mc_event_detail_{value}
  • Started work on documenting filters and actions.
  • Code reorganization.
  • PHP 8.0 compatibility.
3.2.19 2021-11-18
  • Resolve svn problem causing missing files.
3.2.17 2021-03-22
  • Bug fix: Add parameter for required fields handling to ignore during imports.
  • Add filter handling calendar URLs when using Polylang or WPML.
3.2.15 2021-02-27
  • Bug fix: Hide event details section if no fields are visible for section.
  • Bug fix: Update localization to correct usage of l10n parameter.
  • Bug fix: Location AJAX query executed function that only existed in Pro.
3.2.14 2021-02-05
  • Bug fixes: Misc. type casting issues.
  • Add filters mc_filter_events to filter results of main event queries.
  • Add $args array to mc_searched_events filter parameters.
  • Avoid running My Calendar core functionality through My Calendar's own hooks.
  • When using REST API, variables are not submitted in a POST query.
  • [Performance] Move custom location query into object creation to reduce DB calls.
  • Use try/catch in mc-ajax.js to handle case where href does not contain a full URL.
  • Autocomplete support for locations in admin.
  • Reset select elements in My Calendar nav to inline.
  • Minor refactoring in settings pages.
3.2.13 2021-01-04
  • Bug fix: Using embed targets is more complicated than expected; disable by default. Enable with 'mc_use_embed_targets' filter.
  • Bug fix: Strip embed from parameters when building links (when embed target enabled.)
3.2.12 2020-12-23
  • Bug fix: Don't use embed target link when AJAX disabled.
  • Improvement: Add AJAX navigation into browser history & address bar.
3.2.11 2020-12-21
  • Bug fix: switching to week view display broken.
  • Bug fix: links to template help pointed to old location for help.
  • Bug fix: AJAX nav pulled height from first rendered calendar, not current navigating calendar.
  • Change: filter to pass custom notices for front end submissions and editing.
  • Remove fallback function for is_ssl()
  • Improve conflicting event errors when the conflicting event is still unpublished.
  • Add custom template to pass a calendar that's embeddable via iframe.
  • Bug fix: Multisite environments need to use navigation on current site, not from remote site.
3.2.10 2020-11-15
  • Change: Fallback text should have a stylable wrapper.
  • Bug fix: Missing translatable string.
  • Bug fix: When multiple categories selected, events in more than one category would appear multiple times.
  • Bug fix: Missing space in MySQL filters in event manager.
  • Bug fix: PHP Notice thrown in location manager.
  • Bug fix: Add note to open events link field if no URI configured.
  • Layout fix: Ensure there's always a space between date & time.
3.2.9 2020-09-25
  • Bug fix: Additional of required fields testing erased error messages generated prior to required fields testing.
  • Bug fix: If an individual occurrence title is edited, event permalinks show the single change on all events.
  • Bug fix: Prev/next event links don't include unique event IDs.
  • Bug fix: Remove irrelevant arguments from prev/next event link generation.
  • Bug fix: Ignore templates if no data passed.
3.2.8 2020-08-28
  • Bug fix: Extraneous screen-reader-text summary generated in event views.
  • Bug fix: Fixes to missing parameters in microdata.
  • Bug fix: Incorrect type comparison caused custom templates not to render in single event view.
  • New feature: Default location.
3.2.5 2020-07-31
  • Bug fix: CSV exported text fields contained newline characters.
3.2.4 2020-07-26
  • Bug fix: Permissions issue caused by variable type mismatch.
3.2.0 2020-06-21
  • Auto-toggle admin time format if display time format set to European format.
  • Show API endpoint when API enabled.
  • Add alternate alias for API endpoint.
  • Add style variables with category colors to style output.
  • Add color output icon with CSS variables in style editor.
  • Add new default stylesheet: Twentytwenty.css
  • Move permalink setting to general settings panel.
  • Change event timestamps to use a real UTC timestamp for reference.
  • Switch from using date() to gmdate().
  • Update Pickadate to 3.6.4. Resolves some bugs, but introduces an accessibility issue.
    • Customizations to Pickadate 3.6.4 to repair accessibility
    • don't move focus to picker
    • add 'close' button to time picker.
    • Switch Pickadate to classic theme (modified).
  • Improvements to output code layout.
  • Eliminate empty HTML wrappers in content.
  • New filter: mc_get_users. Use custom arguments to get users.
  • New filters: mc_header_navigation, mc_footer_navigation
  • New template tags: {userstart}, {userend} - date/time in local users timezone.
  • Bug fix: Misc. ARIA/id relationships broken.
  • Bug fix: remote locations sometimes pulled from local database.
  • Bug fix: Long-standing issues in user input settings.
  • Bug fix: Don't duplicate .summary values.
  • Bug fix: Only render one close button in mini calendar.
  • Collapse 'View Calendar' and 'Add Event' adminbar menus into a single menu.
  • Remove upgrade path from 2.2.10.
  • Remove .mc-event-visible from style output. Unused since 2011.
  • Remove numerous deprecated functions.
  • Conformance with latest WordPress PHPCS ruleset.
3.1.18 2019-12-15
  • Add filters to 'Add to Google Calendar' link: mc_gcal_location & mc_gcal_description
  • Add 'nofollow' to links to past events.
  • Include recurrence info in post meta box.
  • Change limit on adding occurrences from 20 to 40.
  • Minor code refactoring.
3.1.17 2019-10-11
  • Bug fix: comma misplaced in mc_list_title_title.
  • Provide special handling in cases where multiple categories are enabled but selector is passed a non-array value.
3.1.16 2019-10-09
  • Bug fix: restricting styles & JS to specific pages broken by strict type checks.
  • New filter: mc_list_title_title
3.1.13 2019-08-08
  • Bug fix: If plug-in name is translated, script references were broken.
  • Bug fix: If no holiday category assigned, Today's Events widget will return empty when category limits set.
  • New filter: allow events post type to be made searchable. (Not recommended.)
  • New: Support 'search' parameter in shortcode & URL parameters for main view.
  • Remove option to disable max contrast category names.
3.1.12 2019-05-07
  • Bug fix: User-specific category permissions didn't handle unset (default) values.
  • Bug fix: missing row closure element when weekends not displayed.
3.1.11 2019-04-30
  • New filter on mc_user_permissions operated on wrong variable.
3.1.6 2019-02-22
  • Bug fix: If a category name was blank, it would automatically be filtered to by upcoming events lists.
  • Bug fix: Show print view as list if main view is list.
  • Bug fix: Strip HTML tags from aria-label attributes
  • Bug fix: .details needs position: relative in twentyfifteen stylesheet
  • Adjust tested to value to 5.1
3.1.5 2019-01-25
  • Bug fix: PHP error checking broken due to session creation
3.1.4 2019-01-15
  • Bug fix: typo in category string parameter for ical output
3.1.3 2019-01-07
  • New filter: 'mc_list_titles_separator'
  • Bug fix: Help support data not displayed.
  • Override content overflow in Twentynineteen
  • Add support for iCal format in API exports
3.1.1 2018-11-06
  • Bug fix: unspamming event_ID passed incorrect variable name
  • Bug fix: Don't run spam check on users with mc_add_event
  • Bug fix: Users with mc_add_event should not be able to trash other's events.
  • Bug fix: Refine permissions; add mc_publish_events allowing users to publish own events without access to others
  • Bug fix: Refine permissions; don't display links that users can't use.
3.1.0 2018-10-31
  • Add feature (by Josef Fllman): Print & export view for search results.
  • New filter: mcs_check_conflicts (impacts Pro only)
  • Bug fix: Fix issue causing duplication in some views.
  • Bug fix: Time format should be filtered in initial edit view.
  • Bug fix: Category relationships not retained when Group editing applied.
  • Bug fix: aria-describedby ID mismatch.
3.0.18 2018-09-21
  • Bug fix: Invalid setting in bottom nav defaults.
  • Bug fix: Generate feeds by date added rather than fixed number. If empty, get most recent regardless.
  • Bug fix: Legitimate HTML escaped in visual editor in group event editor.
3.0.17 2018-09-07
  • Bug fix: Group event editing was broken.
  • Bug fix: Eliminate four PHP notices in the Today's Events widget.
  • Added: Filter to control whether CSS should be loaded on archives.
3.0.11 2018-07-06
  • SECURITY: XSS - Canonical URL not properly sanitized. Affects 3.0.0 and up.
3.0.9 2018-07-02
  • Bug fix: Error thrown if Akismet had previously been configured, then deleted.
  • Bug fix: location type was added to params if category key was set.
  • Bug fix: remove a couple notices
  • Bug fix: category relationships not carried over when recurring events split
3.0.0 2018-06-14
  • Bug fix: If category deleted, set events with that category to default cat, not cat ID 1.
  • Bug fix: Date/time comparison used front-end date value instead of dtstamp in upcoming events.
  • Bug fix: Navigation issue if beginning of week is in previous month
  • Bug fix: Event conflict didn't catch events 100% contained inside other events.
  • Bug fix: Private categories should not be visible to public users in submission forms or category lists
  • Bug fix: aria-current key term value was translatable
  • Bug fix: If editing single instance, location is removed
  • Bug fix: don't show location control notices on front-end
  • Bug fix: correcting event recurrence did not always remove meta flag
  • Bug fix: Only output map HTML if API key provided
  • Bug fix: character set and collation determination on install & update
  • Bug fix: When changing recurring events, only change instance IDs if the date of the instance has changed.
  • Bug fix: Event post should not change post date on update
  • Bug fix: All day events should export correctly to Outlook & Apple Calendar
  • Bug fix: Location control accordion was not accessible.
  • Bug fix: Term ID was not set in category manager if term already existed.
  • Bug fix: Make sure that the 's' query var is not automatically added to My Calendar URLs

  • Add: several new filters

  • Add: notice to alert users if their calendar configured for remote event source.

  • Add: map display to back-end location manager.

  • Add: location search in location manager

  • Add: ability to filter location lists used to submit data 'mc_get_locations'

  • Add: Support for multiple categories on events.

  • Add: stylesheet (Twenty Eighteen)

  • Add: CSS variables support

  • Add: list of problem events in Manage Events sidebar

  • Add: add months shown in list view to shortcode parameters

  • Add: support for auto-refresh of cache for a variety of caching plug-ins.

  • Add: Option to remove event data on uninstall

  • Add: filter to define events as private via custom methods

  • Add: event preview

  • Add: location support to mini calendar widget

  • Add: CSS code editor available in Style editing

  • Add: HTML code editor available in Template editing

  • Add: address markup

  • Add: event markup

  • Add: Include event link in 'Add to Google Cal' content.

  • Add: date format for multi-day dates in grid view.

  • Removed: event open & event closed text settings

  • Removed: event_open event status (little used and confusing; replaced by My Tickets)

  • Removed: guessing calendar install location

  • Removed: event cache code

  • Removed: upgrade routines from 1.11.x

  • Removed: mc_widget_defaults option

  • Removed: user's guide references

  • Change: default image sizes from 'medium' to 'large'

  • Change: Remove ability to disable event approval; remap "approval" to "draft"

  • Change: default number of results to show in advanced event search.

  • Change: Switched from image to icon font for close button

  • Change: Major changes to event fetching

  • Change: Major changes to code organization

  • Change: Added caching on database engine query

  • Change: if event location set in dropdown, event will always display location as shown in location manager

  • Change: changed argument style for major functions to arrays of arguments

  • Change: move Location Manager to separate page; add location sorting.

  • Change: Move exif_ fallback function into utilities include

  • Change: Moved location & category specific settings

  • Change: Simplified texts in several locations

  • Change: Clearer UI on location input limits

  • Change: autotoggle end date minimum input when start date set

  • Change: Reorganized input fields

  • Change: Generate separate iCal exports for Google Calendar or Outlook

  • Change: Constrain tabbing within details pop-up

  • Change: Close details pop-up with Esc key

  • Change: Audited options to remove unused or unneeded options

  • Change: Create a referential template when shortcode generated

  • Change: Feeds nav panel now shows subscription links; exports are available in 'exports' panel.

2.5.17 2018-04-03
  • Security: Authenticated XSS vulnerability resolved.
  • Remove 'create_function' for PHP 7.2 compatibility.
  • Updated: Upgrade Notice output.
2.5.16 2017-11-18
  • Bug fix: Event deletion action executed when individual instance deleted from front-end
  • Updates: due to esc_sql function changes in WordPress 4.8.3
2.5.15 2017-10-21
  • Bug fix: Jumpbox rendered October as January due to unneeded character replacement
2.5.14 2017-10-17
  • Bug fix: saving setting for main calendar URL from front page doesn't work
  • Bug fix: esc_url only in appropriate places
  • Bug fix: Recognize month parameter from shortcode in navigation elements
  • Bug fix: 404s for deleted events
  • Bug fix: Print styles handle date in week view better
  • Bug fix: Events not visible in list with list JS disabled
  • Bug fix: SQL query for conflict checking threw errors
  • New option: list all events in list view with JS
2.5.13 2017-08-29
  • Bug fix: Categories can not be part of the md5 hash used to identify unique tables (breaks AJAX nav for categories)
  • Bug fix: recurring scheduling for week-days only not functional when 7 days or greater
  • Bug fix: Print view location filters broken
  • Bug fix: Make AJAX scripting aware of which other scripts are enabled.
  • Bug fix: Sort scheduled dates for event by date
  • Bug fix: JetPack Grunion Contact form interfered with TinyMCE in contexts outside of post editor (
  • Bug fix: ensure date is retained if datepicker disabled
  • Bug fix: archived events filter marked as active when not *
2.5.12 2017-07-05
  • Bug fix: missing space in conflict identification
  • Bug fix: internationalization of string to time created conflict when entering month abbreviations
  • Add filter to enable creation of a custom content editor
2.5.11 2017-06-07
  • Bug fix: Bottom mass action buttons outside of form
  • Bug fix: User select form used 'checked' instead of 'selected'
2.5.10 2017-06-05
  • Bug fix: allow parsing of non-English strings through strtotime()
  • Bug fix: trim whitespace off array keys in location controller
  • Bug fix: Don't display 'Add Event' menu in adminbar if remote event database is enabled
  • Bug fix: All day events correctly exported in iCal files
  • Bug fix: Footer navigation not shown on single day view
  • Bug fix: Execute AJAX navigation from both header and footer containers
  • Bug fix: {icon_html} returned broken image if category had no assigned icon
  • Removed obsolete PHP 4 compatibility for clone keyword
  • Added hook to prevent activation if PHP version below 5.3.0.
  • New filter: define custom target calendar URL via 'mc_get_uri' filter
  • New action: 'mc_insert_recurring' run while creating event instances
  • New filter to customize default event length: 'mc_default_event_length'
  • New filter: 'mc_show_week_number' to turn on column indicating displayed week's number. (props Josef Fllman)
  • UI Change: Duplicate navigation and search on events list at bottom of list
  • Miscellaneous improvements to the My Calendar Filters shortcode: set target URL & change location search type, add as widget
  • New widget: My Calendar event filters
  • Added inverse color style declaration to category color template tag
2.5.9 2017-04-25
  • Bug fix: class .mc-main appeared twice in day view
  • Bug fix: iCal output fetches no data on subsites in multisite networks
  • Bug fix: broken image upload script due to localization change
  • Bug fix: sorting events by category should sort by name, not ID
  • Add site name to .ics output file
2.5.0 2016-10-14
  • Update hcalendar structures
  • Better handling when updating event taxonomies
  • Options to restrict management of events by category / user
  • UI Clean up
  • Don't display format toggle on mobile if automatic format switching enabled
  • Add custom date option to upcoming events shortcode builder
  • Improved error message if user creates event with an invalid recurring cycle
  • Updated template editor; ability to create custom templates.
  • Add option to add new dates for an existing event.
  • For single event, show closest available date if no/invalid date ID provided.
  • Added first occurrence data to core event object
  • New template tag: {related} to list other events in the same group
  • New loading indicator for AJAX navigation
  • New filter to modify event classes
  • New function to generate event classes
  • Reduce number of strings in plug-in to reduce burden on translators
  • Multisite: ability to display calendar for any site on any other site
  • in my_calendar_draw_event(), add filter to hide additional days of events
  • Improved HTML filtering to allow input elements and attributes.
  • Add support for Google Maps API key field, now required for use of Google Maps on new sites
  • Add 'today' keyword for the upcoming events 'to' attribute
  • Updates to Help documentation
  • Bug fix: auto assign events with no category to 'General'
  • Bug fix: some user select lists overwrote select list options
  • Bug fix: new events with no times entered need to be created as all day events
  • Bug fix: wrong number of arguments passed to mass delete events hook
  • Bug fix: Custom JS incorrectly escaped in Script manager
  • Bug fix: removed numerous notices
  • Bug fix: improved handling of missing event posts
  • Bug fix: allow more HTML elements & attributes
  • Bug fix: misc. notices

Breaking Changes: * Breaking change: minor changes to classes to improve structured data in microformats * Breaking change: upcoming events widget no longer uses ID 'upcoming-events'; use class '.upcoming-events' * Breaking change: today's events widget no longer uses ID 'todays-events'; use class '.todays-events'

2.4.21 2016-06-11
  • Bug fix: Google Maps format change to latitude/longitude links
  • Bug fix: Use short description directly as {excerpt} if provided.
2.4.20 2016-05-26
  • Bug fix: PHP warning triggered on type conversion when toggling time views.
  • Bug fix: Map template tag returned raw scripts without <script> tags.
2.4.19 2016-05-24
  • Security fix: XSS vulnerability: user who could create or edit an event could insert a XSS attack.
  • Security fix: Phishing vulnerability: user who could create or edit an event could insert an iFrame for phishing
  • Security fix: Possible to programmatically alter the event being edited to push edits into a different event.
  • Security fix: Possible to programmatically alter the author of the edited event.

Other changes in this release:

  • Screen-reader-text class was duplicated on mini calendar dates
  • New class: 'all-categories' on all categories link
  • New filter: filter All Categories text
  • New filter: filter Map URL & Map Label
  • Bug fix: when sequentially switching from Month to Week to Month & back to Week, Week would revert to first week of month.
  • Bug fix: Maintain current view when switching categories
2.4.0 2015-08-11

New features: * Set upcoming event class based on time, rather than date. * Add past/present classes to today's events widget * Assign Custom All Day label for each event. * Support hiding 'Host' field as option. * Made primary sort order of events filterable: 'mc_primary_sort' * Added action to location saving handling updated locations * Added arguments to from/to filters in Upcoming Events * Enabled option to turn on permalinks * Custom canonical URL for event pages * Added 'date' parameter to today's events list & shortcode accepting any string usable in strtotime() * Added 'from' and 'to' parameter to upcoming events list & shortcode accepting any string usable in strtotime * Added year/month/day parameter to main shortcode to target specific months for initial display. * Make BCC field filterable * Add filters to search query parameters * New option: switch to mini calendar on mobile devices instead of list view. * Add [day] select field to date switcher if in 'day' view. * Option to set default sort direction * Ability to set three separate event title templates: grid, list, and single. * Added admin-bar link to view calendar. * Added option to customize permalink slug on permalink page * Single event pages as permalinks use the same template as main if custom template isn't enabled. * New template tag: {color_css} and {close_color_css} to wrap a block with the category background color. * Add category classes to Upcoming & Today's events widgets * Redirect page to main calendar if event is private * Improved labeling of cell dates

Bug fixes: * Stop setting all day events to end at midnight; use 11:59:59 and filter output * Rewrite iCal output so that the iCal download eliminates Holiday cancellations [todo] * Bug fix: Prevent extraneous variables from leaking into the navigation output. * Rendering post template in permalinks only applies within Loop. * Template attribute preg_match could only pick up 2 parameters * Prevent an invalid mc_id value from returning errors. * Prevent deprecation notice when getting text_direction * Default to not showing navigation options in print view. * Better loading of text domain. * Prevent mini calendar from switching to list format. * Change class construction to PHP 5 syntax * Close button is now a button rather than a link. * Fixed display of text diff for stylesheet comparisons * Two different filters with different names. * mc_after_event filter not running with custom templates. * With My Tickets active, enter key did not submit Add/Edit event form * Fixed documentation error with ical template tags. * Improved efficiency of WP shortcode processing in templates. * A multi-day event crossing the current day was counted as a future event in upcoming events * If event instance was split from recurring event, showed same recurring settings as original event. * If events were mass deleted, the corresponding event post was not also deleted. * Prevent single event pages from displaying content if the event is in a private category.

Important Changes: * Removed references to #jd_calendar and generate custom IDs. [breaking change * Revision of settings page [reorganize settings into tabs] * Reorganized settings pages.

Other: * Moved changelog for versions prior to 2.3.0 into changelog.txt

Translations: * Updated Polish, Portuguese (Portugal), Dutch, Turkish, Slovak, Norwegian, Hungarian, German, Spanish, Persian, Czech, Danish

2.3.32 2015-06-08
  • Bug fix: end time for events auto-toggled to midnight, instead of +1 hour when end time omitted.
2.3.0 2014-04-10

This is a major revision.

  • Bug fix: Manage events screen showed no data for users without manage_events permissions.
  • Bug fix: if single event set, could not filter to time period views.
  • Bug fix: 'single' template ID not passed into template filter.
  • Bug fix: events in private categories appeared in time-based upcoming events lists.
  • Bug fix: RSS feed encoding.
  • Bug fix: Turn-of-year issues with week view.
  • Bug fix: Added new locations multiple times if added with multiple occurrences of an event.
  • Bug fix: In some browsers, time selector added invalid data.
  • Bug fix: List of search results not wrapped in a list element.
  • Bug fix: Trim spaces on above/below navigation strings.
  • Bug fix: If an event ends at midnight, automatically end tomorrow unless set for a later date.
  • Bug fix: Don't show events on both days if they end at midnight.
  • Bug fix: Don't attempt to enqueue jquery.charcount.js if WP to Twitter not installed.
  • Bug fix: Dates didn't strip links in list view when JS disabled for that view.

  • New template tag: {runtime} to show human language version of length of event.

  • New template tag: {excerpt} to create autoexcerpt from description field, using shortdesc if it exists.

  • New feature: Accessibility features for locations.

  • New feature: Specify accessibility services for events.

  • New feature: ticketing link field

  • New feature: event registration information fields

  • New feature: my_calendar_event shortcode can query templates by keyword (list,mini,single,grid).

  • New feature: filter events by available accessibility services

  • New feature: Combined filter shortcode to group all filters into a single form. [mc_filters show='locations,categories,access']

  • New feature: new API for adding custom fields to events.

  • New feature: data API to fetch event data in JSON, CSV, or RSS formats.

  • New feature: Archive events to hide from admin events list.

  • New feature: Control input options for multiple types of location input data.

  • New feature: Shortcode generator for primary, upcoming, and today's events shortcodes.

  • New feature: admin-side event search

  • New feature: category key now acts as quick links to filter by category

  • New feature: Option to add title to Event Search widget.

  • New filter: mc_date_format for customizing date formats.

  • New filter: customize search results page: mc_search_page

  • New filter: mc_use_permalinks to enable use of custom post type permalinks for single event pages.

  • New filter: mc_post_template to customize template used in single event shortcode automatically inserted into custom post type pages.

  • New design: new stylesheet available: twentyfourteen.css

  • Updated: added more fields to search on events.

  • Updated: updated image uploader to use add media panel and store attachment ID

  • Updated:

    template supports all template tags (but strips HTML.).
  • Updated: Various aspects of UI

  • Updated: Date/time selectors. See, MIT license.

  • Reorganized default output template code.

  • Import all used locations into location manager.

  • Removed User settings fields.

  • Moved Holiday category assignment to Category Manager.

  • Improved get current URL function.

  • iCal output in multiple-month view outputs all displayed months.

  • {map} template tag to display a Google Map using the Google Maps API. (Not available in pop-up displays.)

  • Scheduled removal of showkey, shownav, toggle, and showjump shortcode attributes.

  • Removed upgrade support for 1.6.x & 1.7.x series of My Calendar.

2.2.13 2013-10-29
  • Bug fix: Threw error if network-activated (wp_is_mobile() not defined yet)
  • Bug fix: Calendar URI could be saved as integer instead of as URL.
  • Bug fix: hide screen options that current user can't use.
  • Improved localization of Calendrical jQuery plug-in.
  • Feature: my_calendar_upcoming and my_calendar_today shortcodes now support filtering by host.
  • New filter: mc_send_notification -- passes event and user data to determine whether a new event email notification should be sent. Return true|false.
2.2.9 2013-08-22
  • Bug fix: Reversed argument in $details filter, breaking custom template editor.
2.1.5 2013-04-17
  • Bug fix: upcoming events timestamps were converted to UTC.
2.0.12 2012-11-20
  • I horribly screwed up the Upcoming Events widget in 2.0.11. Please accept my apologies.
1.11.3 2012-09-18
  • Fatal error in PHP 5.4+
  • Bug fix: {date} and {time} template tags not rendered in details link when run in a template.
  • Bug fix: upgrade database button placement off-screen
  • Bug fix: layout on stylesheet editor caused usability problems
  • Bug fix: added line break in iCal output.
  • Change: added alt attribute to category icons in appropriate contexts.
  • My Calendar 2.0 beta added to subversion repository. Here there be bugs.
1.11.2 2012-06-28
  • Bug fix: Called wp_editor on versions below 3.3
  • Bug fix: assorted PHP notices cleaned up. *
1.10.12 2012-05-24
  • Bug fix: List format showed all dates, regardless of whether there were events for that date.
  • Bug fix: List format showed incorrect classes.
  • Bug fix: Pipe separator for categories not supported with caching.
  • ARRRRGGGGHHHH!!! I'm sure you're as frustrated about all these little releases as I am. But who wants to sit on known bugs?
1.10.6 2012-02-15
  • Revised template tags so the description tags are run through wpautop(), and added _raw versions which are not.
  • Fixed a bug in URL generation so that URLs with ports are correctly constructed.
  • Fixed a bug iin Print output which did not allow restriction to multiple categories
  • Added option to use {date} in previous/next navigation links to indicate what date set is being navigated to.
1.9.8 2012-01-10
  • This is just a convenience update due to a warning appearing in 1.9.7 that I missed.
1.9.0 2011-09-15


  • template editing for list, grid, mini, and single event output.
  • pop-up box is now draggable.
  • date format option for grid mode, week view.
  • templating for details link text.
  • templating for event URL link text.
  • location filtering from shortcode.
  • image upload option for events
  • day class to calendar date headings and cells
  • individual instances of repeating events can be edited
  • feature to add multiple occurrences of an event simultaneously. (concept from Dave Heitzman)
  • feature to mass edit information for groups of events (concept from Dave Heitzman)
  • stored URL for locations (contrib by John Colvin)
  • recurring daily events on weekdays only (based on contrib by John Colvin)
  • optional templating for all event output formats
  • individual event occurrence iCal export
  • numerous additional template tags
  • Option to use custom location filter fields as data control
  • Shortcode to generate list of saved locations
  • Network administrators can control whether sub-site calendars contribute only to a central calendar, only to their own calendar, or whether site administrators can make that choice.
  • Upgrade notice information in dashboard for future upgrades.
  • implementation of WordPress text diff to compare your styles and scripts against my current released versions
  • Option to skip a defined number of events in upcoming events lists.

Bug fixes:

  • jump box was displaying in week/grid view.
  • some potentially repeatable IDs (code validation).
  • 'Administrators see all options' did not work.
  • Fixed timestamps on main calendar objects
  • Squashed e_notice errors.
  • category limiting did not work without permalinks due to GET variable conflict with WordPress core
  • Missing nonce in database upgrade routine
  • Mini calendar simultaneously displayed single event view when visited.
  • Link generation for details view did not work if calendar link parameterized
  • Issue with weekdays only calendar if day of week set to start on Sunday
  • Issue with retrieval of user-specific settings
  • Issue with accessing styles and javascript if My Calendar installed in non-standard directory.
  • Problem in Today's Events widget when Holiday restrictions are enabled.


  • replaced all default icons with 24-bit transparent PNGs
  • jumpbox output to automatically scope to the oldest dates in the database.
  • iCal output changed to output all events for complete current month
  • RSS output to prioritze newly added events
  • holiday skipping/fifth week customization moved into event manager function
  • new 'close' icon for pop-up box; added close icon and scripting to mini calendar pop-up
  • copy in several places; updated template tags.
  • location lists sorted by location label (contrib by John Colvin)
  • Eliminated calendar heading option
  • default style resets no longer stored in global variables, instead stored as files.
  • Map links now trigger the driving directions dialog in Google Maps
  • New default stylesheet, refresh.css
1.8.9 2011-09-12
  • Fixed bug with database upgrade in multi-user additional calendars
  • Fixed bug where calendar picked up current month labeling using current day of the month
  • Added French translation
1.7.8 2011-04-05
  • Bug fix: Behaviors page limits lost on settings refresh
  • Bug fix: Fix {enddate} shortcode output.
  • Bug fix: iCal output improvements
  • Modification: RSS and iCal output are disabled entirely when turned off, rather than just hidden.
  • Modification: Added styles for days out of current month
1.7.2 2011-02-01
  • Bug fix: Fixed import from Calendar feature.
  • Bug fixed: Upcoming events widget default text fixed
  • Italian translation updated to 1.7.0
1.6.3 2011-01-15
  • Updated jQuery to fix conflicts in previous versions and so behaviors would work with AJAX navigation. Not updated by upgrade; use Behaviors reset to apply.
  • Incorporated option to enable AJAX navigation for next/previous navigation.
  • Fixed bug with multi-month display in list format where January could not be displayed.
  • Revised settings page for clarity.
  • Fixed some default settings issues.
  • Fixed a bug where the locations lists didn't respect the datatype parameter.
  • Added templating to event titles for calendar grid or list output.
1.5.4 2010-12-05
  • Fixed: Bug with permissions in event approval process.
1.4.6 2010-08-21
  • Fixed: Flash of unstyled content prevention scripts weren't disabled when other scripting was disabled.
  • Fixed: Categories which started with numerals couldn't have custom styles.
  • Fixed: Locations required valid 0 float value to save records on some servers; now supplied by default.
1.4.3 2010-08-09
  • Fixed a bug where event end times were displaying the start time instead when editing.
  • Fixed a bug introduced by the mini calendar option which displayed titles twice in list format.
  • Fixed a bunch of typos.
  • Added a loop which automatically adds the mini calendar styles if you don't already have them.
  • Fixed a bug where JS didn't run if the 'show only on certain pages' option was used.
  • Added a qualifier for upgrading databases when you haven't added any events.
1.4.0 2010-07-27
  • Bug fixed: Today's Events widget was not taking internationalized time as it's argument
  • Added end time field for events
  • Added option for links to expire after events have occurred.
  • Added options for alternate applications of category colors in output.
  • Added ability to use My Calendar shortcodes in text widgets.
  • Added GPS location option for locations
  • Added zoom selection options for map links
  • Lengthened maximum length for category and event titles
  • Added a close link on opened events details boxes.
  • Added an option for a mini calendar display type in shortcode
  • Optimized some SQL queries and reduced total number of queries significantly.
  • Extended the featured to show CSS only on certain pages to include JavaScript as well.
  • Upcoming events widget only allowed up to 99 events to be shown forward or back. Changed to 999.
  • Attempted to solve a problem with infinitely recurring events not appearing in upcoming events. Let me know.
  • Added setting to change Previous Month/Next Month text.
  • Yeah, that's enough for now.
1.3.8 2010-07-08
  • Fixed problem with CSS editing which effectively disabled CSS unless a specific choice had been made for pages to show CSS
1.2.1 2010-06-04
  • Corrected a typo which broke the upcoming events widget.
1.1.0 2010-05-10
  • Fixed some problems with Upcoming Events past events not scrolling off; hopefully all!
  • Fixed some problems with fuzzy interpretations of the numbers of past/future events displayed in Upcoming Events.
  • Added Bi-weekly events
  • Added restrictions so that admin level users can edit any events but other users can only edit their own events
  • Removed character restrictions on event titles
  • Revised default stylesheet
1.0.2 2010-05-04
  • Fixed problems with editing and deleting events or categories in multiblog installation
  • Fixed escaping/character set issue
  • Fixed issue when blog address and wp address did not match (introduced in 1.0.1)
  • Added import method to transfer events and categories from Kieran O'Shea's Calendar plugin
1.0.0 2010-04-10
  • Initial launch.