Plugin Directory

Test out the new Plugin Directory and let us know what you think.
!This plugin hasn’t been updated in over 2 years. It may no longer be maintained or supported and may have compatibility issues when used with more recent versions of WordPress.

Google Calendar Widget

This plugin installs a sidebar widget that can show the upcoming events from a Google Calendar feed.

How do I get a Google API Key?

  1. Go to https://console.developers.google.com.
  2. Create or select a project for your web site
  3. In the left sidebar, expand APIs & auth then select APIs
  4. Change the status of the Calendar API to ON
  5. In the left sidebar, select Credentials
  6. Click on Create new Key and choose Browser key
  7. For testing purposes you can leave the referrers empty, but to prevent your key from being used on unauthorized sites, only allow referrals from domains you administer.

Where do I get the calendar id?

See the here for more information about how to find your calendar key (http://googleappstroubleshootinghelp.blogspot.ca/2012/09/how-to-find-calendar-id-of-google.html).

How do I change the language of the dates

You can download localized versions of date.js from here. Find the correct language version in the "build" folder of the zip file, and replace the date.js in the plugin folder.

How can I change the format of the dates and times

The date and time is formatted using the date.js library. Look for code like the following two lines in ko-calendar.js and change the format argument to match the format you want.

startJSDate.toString("ddd, MMM d, yyyy h:mm tt")
dateString = startJSDate.toString('MMM dd');

The formatting represents how the information will look on the page "MMM" translates to the abbreviated name of the month.

Take a look at the documentation for how you can change that formatting string to match what you want. http://code.google.com/p/datejs/wiki/FormatSpecifiers

For example, you can change the following

dateString = startJSDate.toString('MMM dd');

to this

dateString = startJSDate.toString('dd.MM.yyyy');

to change the agenda item "Jan 2" to "02.01.2009"

Why is HTML in my calendar entry getting mangled

The plugin uses the wiky.js library that generates HTML from a wiki-like markup language. It expects that the calendar item descriptions are marked up using that format. This is done to simplify the formatting for users who are already familiar with wiki markup and make the calendar entries easier to read when not interpreted.

If you wish to remove this transformation simply replace the following line in ko-calendar.js

bodyDiv.innerHTML = Wiky.toHtml(entry.description != null ? entry.description : "");


bodyDiv.innerHTML = entry.description != null ? entry.description : "";

How do I insert this in a theme without a sidebar

NOTE: After the V3 API upgrade this may not work correctly.

You can insert the widget into a template directly, without adding it to a sidebar, by inserting php code directly into your theme.

        'title' => 'Calendar Title',
        'url' => 'yourcalendar@gmail.com',
    array('before_widget' => '<div class="calendarwidget">',
        'after_widget' => '</div>',
        'before_title' => '<div class="calendartitle">',
        'after_title' => '</div>'

You can configure it with the same options available in the widget, as the second parameter to the_widget.

  • 'title' will appear at the top of the calendar.
  • 'url' is the id of your Google Calendar (see the Installation instructions for more details)
  • 'url2', and 'url3' allow you to specify multiple calendars to be shown in the one view.
  • 'maxresults' restricts the number of events to show. The default is 5.
  • 'titleformat' is the format of the event titles. The default is "STARTTIME - TITLE".
  • If 'autoexpand' is TRUE, the calendar will show the details of each event by default. The default is FALSE.

The third parameter lists the standard widget options. See the wordpress Widget documentation for more details. They can each be blank (i.e. 'before_widget'=>'') or contain whatever formatting you desire to be inserted in the flow.

How do I customize the event titles?

The "Event Title Format" option for each calendar allows you to format how you wish the calendar events to appear in the event list. The default format is "[STARTTIME - ][TITLE]" so, for example, an event that starts at 6:00pm would called "Birthday Party" would appear as "6:00PM - Birthday Party".

  • [TITLE] will be substituted with the event title.
  • [STARTTIME] will become the start time (or "All Day" if it is an all day event).
  • [ENDTIME] will become the end time (or blank if it is an all day event).

Any extra characters included within the [] will be inserted if the value exists. That is, [ENDTIME - ] will insert " - " after the end time, if and only if there is an end time.

If an event is an all-day event, then [STARTTIME] will be replaced with "All Day" and no [ENDTIME] will defined.

All html tags are stripped except <br> and <p> tags.


  • "[STARTTIME] - [TITLE]" becomes "6:00AM - Test Event" or "All Day - Test Event"
  • "[STARTTIME] - [ENDTIME - ][TITLE]" becomes "6:00AM - 9:00AM - Test Event" or "All Day - Test Event"
  • "[STARTTIME][ - ENDTIME] : [TITLE]" becomes "6:00AM - 9:00AM : Test Event" or "All Day : Test Event"
  • "[STARTTIME][ - ENDTIME]<br>[TITLE]" becomes "6:00AM - 9:00AM<br>Test Event" or "All Day<br>Test Event"

Can I use this code outside of WordPress in an HTML page?


I have included an example with the plugin in "examples/stand_alone.html" that shows an example using the plugin code. Each element is tagged so it should be flexible for styling; see the existing stylesheet for examples. You must replace the text 'YOUR API KEY HERE' with your Google API Key

Requires: 2.8 or higher
Compatible up to: 4.0.16
Last Updated: 2 years ago
Active Installs: 8,000+


4.3 out of 5 stars


0 of 1 support threads in the last two months have been marked resolved.

Got something to say? Need help?


Not enough data

0 people say it works.
0 people say it's broken.

100,1,1 100,1,1 100,1,1
100,1,1 100,2,2
100,4,4 100,2,2
100,2,2 100,1,1
100,2,2 83,6,5
100,1,1 100,1,1
0,1,0 100,1,1