This plugin hasn’t been tested with the latest 3 major releases of WordPress. It may no longer be maintained or supported and may have compatibility issues when used with more recent versions of WordPress.

Gcal Sidebar


Gcal Sidebar pulls a Google calendar feed and displays it in the sidebar of your wordpress blog. It supports both widget and shortcode modes.

List of shortcode options (Default options are first):

  • map_link=[0|1] 0 disables the map link, 1 shows a link to the location in google maps.
  • mode=[agenda|prose] agenda will display the title and time of the event, prose displays the title, then description
  • show_date[none|short|long] none displays no date header, short displays “Thu, Dec 2”, long displays “Thursday, December 2”
  • pub_or_priv[0|1] 0 is a public calender, 1 is a private calendar
  • priv_id=[STRING] STRING is the private key of the calendar, see the FAQ for instructions on how to get it.
  • rs_offset=[0|number] lets you ignore the first X results
  • max_results=[4|number] Set the number of results to display in your calendar


  1. Upload gcal-sidebar.php to the /wp-content/plugins/ directory
  2. Activate the plugin through the ‘Plugins’ menu in WordPress
  3. Configure in the Settings menu.
  4. Place it in your sidebar in the widets section.


How do I use the shortcode?

[gcal-sidebar feed_id=”FEED_ID” ] is the bare minimum needed to display a calendar. Additionally, refer to the Description for a full list of shortcode options

What do I put in the Calendar ID field?

Simply put the ID of the calendar, GCal Sidebar will generate the URL itself. You can get the ID by going to the settings of a calendar, then looking in the “Calendar Address” section on the far right.

Where do I get the Private Key?

This is somewhat harder. Again, go to the settings page of the calendar. Look at the bottom in the “Private Address” section. Click on iCal, and copy the text between ‘private-‘ and ‘/basic.ics’. That is your private key. Paste that into the public / private config box to allow access to private calendars.

How do I display a different calendar on every page?

Get the Calendar ID, then go to the page and scroll down to the “Custom Fields” Section. Create a new field named gcal_sidebar_feed_id and put the calendar ID in as the value.

Contributors & Developers

“Gcal Sidebar” is open source software. The following people have contributed to this plugin.


Translate “Gcal Sidebar” into your language.

Interested in development?

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



  • left an extra echo statement in. Removed it.


  • Added timezone modifier as per David
  • shortcode now returns the html as it should, rather than write it directly to the page.


  • Fixed bug where all day events are not properly displayed as all day.
  • Turned back to ul rather than dictionary list.
  • Added Date Header option in widget


  • Fixed bug using gmdate instead of local date, causing events to show up on the wrong day
  • Fixed bug causing an empty event to show up at the head of the list
  • Fixed bug where h3 was injected into the title incorrectly
  • Better input validation


  • Added wrapper div so themes can control the layout easier.


  • Added shortcode support, agenda / prose mode, and show_date options


  • Fixed bug where empty calendars displayed empty events on Jan 1 1970


  • Caches calender so that if the server connection fails it can still display your calendar


  • Fixed bug where was not closed. Caused UI issues on IE and Chrome.
  • Added Custom_field support. Setting “gcal_sidebar_feed_id” to a calendar ID or comma seperated list of calendar IDs will override the widget config. This overrides ALL widgets.


  • Fixed bug with private calendar key not set
  • Private events now say busy instead of being blank
  • Implemented “All day” idea from brady8(your patch was an old version)
  • Added patch from Ned for richsnippets support
  • Properly sorted required / optional configs in the widget config


  • Submitted to


  • Added multicalendar support
  • Pull title from calendar if the widget config is empty
  • Changed timezone offset to timezone dropdown default is “Automatic”


  • Removed style from a link to the individual event. The theme should define that, not the module


  • Pull timezone from the calendar instead of relying on the current system or user input.
  • Moved timezone offset option to end of the config as it should be almost never required now.


  • Rearranged the widget config to put common items near the top.
  • Luis Esparza added the ability to display private calendars. Thank you sir.


  • Added results offset feature, This lets you ignore the next X events in your calendar feed. Thanks to Kevin Gruber for funding the development.
  • Added an option to display a MAP link next to each entry.


  • Fixed TimeZone offset bug. (Timezone was two hours off)
  • Fixed bugs in title link and event link dropdowns


  • Added support for multiple calendars
  • Tooltip shows address and description when you mouseover the link


  • Initial Creation