My Calendar


My Calendar does WordPress event management with richly customizable ways to display events. The plug-in 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 need to sell tickets for events? Use My Tickets and sell tickets for your My Calendar events. Set prices, ticket availability, and sell multiple events at the same time using My Tickets.


  • Calendar grid and list views of events
  • Monthly, weekly, or daily view.
  • Mini-calendar for compact displays (as widget or as shortcode)
  • Widgets: today’s events, upcoming events, compact calendar, event search
  • Custom templates for event output
  • Limit views by categories, location, author, or host
  • Editable CSS styles and JavaScript behaviors
  • Schedule recurring events.
  • Edit single occurrences of recurring events
  • Rich permissions handling to restrict access to parts of My Calendar
  • Email notification to administrator when events are scheduled or reserved
  • Post to Twitter when events are created (using WP to Twitter)
  • Managing 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

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.


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

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

Capturi ecran

  • Monthly Grid View
  • List View
  • Event management page
  • Category management page
  • Pagina setări
  • Location management
  • Style editing
  • Template editing


  1. Upload the /my-calendar/ directory into your WordPress plugins directory.

  2. Activate the plugin on your WordPress plugins page

  3. Configure My Calendar using the settings pages in the admin panel:

    My Calendar -> Add New Event
    My Calendar -> Manage Events
    My Calendar -> Event Groups
    My Calendar -> Add New Location
    My Calendar -> Manage Locations
    My Calendar -> Manage Categories
    My Calendar -> Style Editor
    My Calendar -> Script Manager
    My Calendar -> Template Editor
    My Calendar -> Settings
    My Calendar -> Help

  4. Visit My Calendar -> Help for assistance with shortcode options or widget configuration.

Întrebări frecvente

Hey! Why don’t you have any Frequently Asked Questions here!

Because the majority of users end up on my web site asking for help anyway — and it’s simply more work to maintain two copies. Please visit my web site FAQ to read my Frequently Asked Questions!

This plug-in is complicated. Why won’t you help me figure out how to use it?

I will! But not in person. Take a look at my documentation website for My Calendar or buy the User’s Guide before making your request, and consider making a donation!

Can my visitors or members submit events?

I’ve written a premium plug-in that adds this feature: My Calendar Pro. Buy it today!

Is there an advanced search feature?

The search feature in My Calendar is pretty basic; but buying My Calendar Pro gives you a richer search feature, where you can narrow by dates, categories, authors, and more to refine your event search.


5 mai 2020
It has a lot of features and works like a charm. Thanx!
6 aprilie 2020
I use this plugin in free version and I'm very satisfied. Very configurable.
27 ianuarie 2020
While it's easy enough to set up locations and events, the out-of-the-box output templates are, honestly, useless. Ugly formatting, and missing critical information like titles, start times and end times. And the documentation is really poor. I could spend the time to figure it all out, but I need to be able to roll this out to less-savvy users on my multisite installation for them to activate as needed without my intervention.
30 august 2019
This is just what I needed. It is simple to use, looks great right out of the box and isn't overly filled with functionality. I was looking for something simple that a client could manage without too much fuss. This is exactly what I needed. Great Job!!! I'm going to donate to the author. Thank you
Citește toate cele 117 recenzii

Contributori și dezvoltatori

„My Calendar” este un software open-source. La acest modul au contribuit următoarele persoane.


„My Calendar” a fost tradus în 14 locale. Mulțumim traducătorilor pentru contribuția lor.

Tradu „My Calendar” în limba ta.

Te interesează dezvoltarea?

Răsfoiește codul, vezi depozitarul SVN, sau abonează-te la jurnalul de dezvoltare prin RSS.

Istoric modificări


  • 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.


  • 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.


  • Bug fix: restricting styles & JS to specific pages broken by strict type checks.
  • New filter: mc_list_title_title


  • Bug fix: List of access features produced empty UL if no results.
  • Bug fix: Always produce a class on event accessibility selection list.
  • Bug fix: Docs error in describing custom files directory.
  • Add: support passing multiple site IDs into the calendar shortcode in multisite.


  • Bug fix: Unescaped event title in HTML output.
  • Bug fix: Improper saving of Edit All Categories permissions in user profile.
  • New: [my_calendar_next] shortcode.


  • 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.


  • Bug fix: User-specific category permissions didn’t handle unset (default) values.
  • Bug fix: missing row closure element when weekends not displayed.


  • New filter on mc_user_permissions operated on wrong variable.


  • SECURITY FIX: Unauthenticated XSS scripting vulnerability. Update immediately. Thanks to Andreas Hell.
  • Support for defining individual categories as having no category icon.


  • Undefined variable notice.
  • Disable Yoast canonical URL output on single events
  • Use same time variable in templates & in main layout.
  • Using default title template and empty time text, don’t display unneeded colon.


  • Bug fix: ‘event_begin’ is not always a string, so ‘mc_event_date’ not always registered correctly.
  • Update ‘sortable’ code to be prepared for My Calendar Pro 1.9.0.
  • Add ‘mc_date_format()’ function to get appropriate date format
  • Minor settings design changes.


  • Add meta field ‘_mc_event_date’ for use in My Tickets
  • Add option to disable output link using an explicit option.
  • Change the JS so popups are only attached to links.
  • Better UI with custom & deleted occurrences in recurring events.
  • Bug fix: sessions should only be started if a search has been performed.


  • 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


  • Bug fix: PHP error checking broken due to session creation


  • Bug fix: typo in category string parameter for ical output


  • 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


  • Bug fix: Twentyeighteen styles missing from template directory
  • Bug fix: Declare width on th as well as td
  • Bug fix: optgroup close element broken
  • Bug fix: Shortcode generator fixes.
  • Bug fix: Handle case where hidden categories are not an array in event manager.
  • Bug fix: If template tag value contains only whitespace, do not render before & after attributes.
  • Bug fix: Handle form restrictions in KSES introduced in WP 5.0.1.
  • Bug fix: check whether PHP sessions are enabled before attempting to start
  • Change: Only render export links in search results if enabled in main settings
  • Change: [UI] Move stylesheet selector into sidebar
  • Change: Allow target attribute on links.
  • Change: Add label to links that open in new tab.


  • 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.


  • Add feature (by Josef Fällman): 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.


  • Bug fix: Fatal error in export API when location object included.
  • BUg fix: my calendar categories queried private categories instead of public.


  • 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.


  • 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.


  • Changed display UID to avoid duplicate IDs when multiple calendars shown.
  • Add option to display heading in details pop-up.
  • Unify position and size of close button in Twentyeighteen mini calendar.
  • Eliminate multi category parameter from CSV output (doesn’t support multidimensional data)
  • Add GUID to export data.


  • Bug fix: prevent some PHP notices when running Pro importer.
  • Bug fix: Display of multidate time string when crossing months or years.
  • Bug fix: Variable written as constant prevented event_span from saving correctly.
  • Bug fix: Trash counter updated with incorrect values.
  • Bug fix: Two cases where status counter not updated.
  • Change: Add DB version to debugging info


  • Bug fix: incorrect value passed for instance parameter on single event shortcode.
  • Bug fix: hide HTML wrapper for category color when colors disabled.
  • Bug fix: Remove transparent background in Twenty eighteen; blocks category colors
  • Bug fix: Invalid ordering parameter for location lists
  • Feature: Ability to select multiple categories (props Josef Fällman)
  • Moved changelogs for 2.5 & earlier to changelog.txt


  • Bug fix: missing function call when accessing custom mini templates
  • Bug fix: Syntax error in SQL query checking for conflicts
  • Change: pass short description to Akismet if long desc absent


  • Bug fix: My Calendar could prevent canonical link from displaying if canonical link being filtered by another application.
  • Modernize & improve Akismet integration.
  • Add filter to disable Akismet checks.


  • SECURITY: XSS – Canonical URL not properly sanitized. Affects 3.0.0 and up.


  • Bug fix: invalid method used to sort location lists.
  • Bug fix: shortcode generator missing input value
  • Bug fix: datepicker did not reflect start of week settings
  • Stylesheet CSS change


  • 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



  • Bug fix: Case where events ending at midnight (AM) of current day were displayed
  • Bug fix: trim spaces from values earlier when parsing filter elements
  • Change: don’t declare font-family in older stylesheets.


  • Bug fix: Shortcode for locations forms always rendered as if in a group filter.
  • Bug fix: If the default length 1 hr event pushes into next day, adjust length.
  • Bug fix: Incorrectly nested parentheses caused math error in months-by-day recurrence


  • Bug fix: If only one event on a day, event title did not show in list view with show title option.
  • Bug fix: Incorrect array key for fallback parameter in widget
  • Bug fix: custom template query expected 25 chars instead of 32
  • Re-allow
    in event titles.


  • Bug fix: aria-current test was broken for current date
  • Bug fix: Private categories not disambiguated in MySQL query when excluded
  • Improve: Rewrite my_calendar_copyr backup functions to use WP core functions.


  • Bug fix: Category key needed to use a ‘WHERE’ not an ‘AND’; broke output if limiting by category
  • Bug fix: Error thrown in style editor & category editor if custom directory did not exist


  • 3.0.1 did not correct the right error. Correct fix.


  • Bug fix: install error on update.


  • 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.

Future Changes

  • Refactor options storage
  • Revise month by day input & calculation methods
  • Bug: if save generates error, creates ton of notices. [eliminate $submission object and use single object model]
  • Add ability to limit by multiple locations (e.g., view all events in Location 1 & Location 2; only on lvalue)
  • JS to delete events from front-end when logged-in
  • TODO: delete this instance and all subsequent instances