ICS Calendar


Using a simple shortcode, you can embed any iCalendar subscription feed (ending in .ics) into a page as a monthly calendar grid.

This plugin includes the PHP ICS Parser library by Jonathan Goode, John Grogg and Martin Thoma (MIT license).


Once the plugin is installed and activated, use the shortcode below to insert a calendar into your pages. See FAQ for details.


How do I insert a calendar into my page?

Use this shortcode:

[ics_calendar url=”ICAL_SUBSCRIBE_URL” title=”DISPLAY_TITLE” description=”DISPLAY_DESCRIPTION”]

The title and description are optional. If omitted, the title and description provided by the calendar feed will be displayed. Use “none” (e.g. title=”none”) to omit the title or description altogether.

Be sure you are using a subscribe URL (ending in .ics), not a web calendar URL (ending in .html).

These instructions can also be found in WordPress admin under Settings > ICS Calendar.

My calendar won’t load.

This may be due to your server’s configuration. This plugin requires the allow_url_fopen PHP setting to be “true”. Check with your server administrator if you think this may be the issue. Unfortunately because we are retrieving your ICS file from an external server, this setting is essential for the plugin to function. (“True” is the default setting, but some server administrators may have turned off the feature as a security precaution.)

My calendar isn’t updating. What do I do?

For performance, this plugin uses WordPress transients to limit the number of times the ICS feed is loaded from the source. If you have updated events that are not showing up in your page, you can force the plugin to reload the ICS feed every time by adding reload=”1″ to the shortcode. Be sure to remove this when you no longer need to force reload.


Good but language support..

Otherwise this is good, simple and fast but would need support for translations and example: setting which day week starts, which language is displayed..

Read all 2 reviews

Contributors & Developers

“ICS Calendar” is open source software. The following people have contributed to this plugin.


“ICS Calendar” has been translated into 1 locale. Thank you to the translators for their contributions.

Translate “ICS Calendar” into your language.

Interested in development?

Browse the code, check out the SVN repository, or subscribe to the development log by RSS.



  • Fixed translations that were not appearing properly.
  • Fixed bug in translation string format for multi-day events with start and end times.


  • Refactored calendar loop to include months between the first and last month in the feed that do not have any events.
  • Replaced all calls to default PHP date() function with WordPress date_i18n() function to ensure proper formatting.
  • Added WordPress current_time() function to determination of today’s date to avoid time zone issues around midnight.
  • Fixed missing HTML tag when a feed returns no events.
  • Added ability to hide title and/or description with title=”none” or description=”none” in shortcode.
  • Added plugin icon.


  • Added full i18n support.
  • Added these translations: German, English (Australia), English (United States), Spanish (Mexico), French, Portuguese (Brazil). (Note: All languages are machine-translated. Please contact us if you would like to assist in our translation efforts!)


  • Added support for multi-day events. (Thanks to Henry Brink for identifying this issue and proposing a solution.)

  • Updated readme file for clarity.


  • Fixed time zone error that was overcompensating for site’s offset from GMT. (The included third-party ICS Parser library apparently double-applies the time zone offset when time zone data is present in individual events.)
  • Added support for WordPress “Week Starts On” setting.
  • Moved events’ end time from direct display into tooltip on hover over start time, for cleaner appearance.
  • Inserted tag after any slashes in event label output, to prevent run-on lines overflowing table cells.
  • Added date limit to avoid memory issues with very large calendars. Currently hardcoded to 365 days, but will be a configurable option in version 2.0.
  • Added partial support for translations. Full language support coming in version 2.0.


  • Added missing CSS class to display day of week in grid on phone layout only.


  • Added support for localized time format.
  • Removed debugging code that would display for administrators in version 1.1.2.


  • Ran composer update to fix missing dependencies in ics-parser library.
  • Removed recurrence handling code that was no longer needed with ics-parser library updates.


  • Added handling for all-day events.
  • Added handling of multiple events with same start date/time.
  • Fixed start/end time bug affecting feeds that don’t include the time zone in every event.
  • CSS improvements.
  • Updated ics-parser library to version 2.1.4.


  • Added explicit cell widths to CSS.
  • Added donation option to admin page.
    • Fixed bug that would cause all event end times to be 12:00am.
  • Removed unnecessary use of .siblings() jQuery method on month select dropdown.


  • Added handling for empty calendars.
  • Updated “Tested up to” version.


  • Initial release version.