AJAX Calendar


Download: AJAX Calendar
Version: 2.5
Supports: WordPress 2.9 – 3.1

AJAX Calendar is a plugin that will display an AJAXified WordPress calendar. This enhances the functionality of the standard calendar by:

  • Allowing the asynchronous navigation of months, without updating the page
  • Add to blog via a widget


To install the plugin:

  1. Download AJAX Calendar
  2. Unpack the zip. You should have a directory called ajax_calendar, containing several PHP files
  3. Upload the ajax_calendar directory to the wp-content/plugins directory on your WordPress installation.
  4. Enable the calendar in your theme from the Widget page
  5. Make any modifications to your theme, as required
  6. Activate plugin

You can find full details of installing a plugin on the plugin installation page.

Support & Bugs

Support and feature requests should be made through the AJAX Calendar support forum. You can contact me directly but I spend a very limited amount of time on direct support and you stand a better chance of being answered through the forum.

If you find the plugin useful then please do consider making a donation – it is appreciated and helps towards the maintenance of the plugin.


279 thoughts on “AJAX Calendar”

  1. hi,

    this is a great plugin, but it doesn’t work with the lightbox plugin. with lightbox activated, the calendar loads normally but the function of switching months doesn’t work: clicking august reloads the page to the august archive but the calendar still says september.

    with lightbox turned off, the calendar works perfectly.

    lightbox calls prototype and scriptalicious; ajax-calendar uses mootools.js .

    is there a way to reconcile the two? i’m not going to give up lightbox.

    sorry, i don’t know much of anything about javascript…

  2. Now finally the widget also appears at my Widget-Dashboard. But as "p m" already wrote it don’t work together with the popular lightbox plugin!!

  3. Alfons, p.m, I’ve changed the plugin to use a different AJAX library that doesnt clash with prototype. It’s also a lot smaller so it loads faster!

  4. Thanks for this plugin…
    Is it better to apply filters to the titles? (in order, for example, for jLanguage to work with it)
    In that case, it’s an easy change:

    calendar.php line 244:
    $text .= "<li><a href=\"".get_permalink ($pres->ID)."\">".$title = apply_filters('wp_title', $pres->post_title, $sep)."</a></li>";


  5. Jhack, which characters? As far as I can tell, the plugin should already be XHTML compliant.

    Raoul, a good idea and I’ve included it in the latest version (although I went with ‘the_title’, as ‘wp_title’ is for the page title, not the post title)

  6. The previous version (2.4.3) had that problem, but in the latest one (2.4.4) the problem has been fixed. When I wrote the comment the latest version hasn’t been released yet :P.

  7. Hi John

    I’m struggling to get this plugin working with WP 2.1.3, using version 2.4.4 of the ajax-calendar plugin, on an Ubuntu Feisty box running Apache 2. I can activate the plugin on the Plugins page, and I’ve renamed the directory in wp-content/plugins from ajax-calendar2 to ajax-calendar. However, it doesn’t appear in Presentation->Widgets (I’m using the Widgets plugin for 2.1). Is it a WP 2.2+ only plugin if I want to use it as a widget?

    Many thanks.

  8. OK, I’ve managed to get the ajax calender to appear as a widget, but I had to create a wrapper widget to do it:

    Plugin Name: AJAX Calendar Widget
    Description: Calls the ajax_calendar() function

    function widget_ajax_calendar_init() {

    if (!function_exists('register_sidebar_widget'))

    function widget_ajax_calendar($args) {

    <?php echo $before_widget; ?>
    <?php echo $before_title . "" . $after_title; ?>
    <?php ajax_calendar(); ?>
    <?php echo $after_widget; ?>

    register_sidebar_widget(array('AJAX Calendar','widgets'), 'widget_ajax_calendar');




    However, although the individual date links work, and the link to expand the widget to include the article’s in the current month also works, the link to go back one month doesn’t work! Almost there I guess!

  9. <sigh&gt>

    I’ve taken the plunge and upgraded to WP 2.3 – now I no longer need the widget wrapper, and obviously I don’t need the widgets plugin. The AJAX Calendar appears in my sidebar config, however, as before, when I click on the link for viewing September, nothing appears to happen – clicking on the link to show a list of the current month’s posts still works fine.

    Am I missing something obvious?

  10. Hi John,

    I’m still using older version of Ajax Calendar on blog v2.2.3. Recently, on my test machine, which has WordPress 2.3, I downloaded and uploaded latest version and it stopped functioning, and the click on button takes to archive page.

    There after, I checked my page source, here’s what’s happening:

    1. When I activate plugin, by simply extracting to plugins folder, this is what come in the header"
    microAjax ('')

    Note: There’s missing forward slash in between wp3 & wp-content

    2. Then, I edited Plugins.php and added a slash . ‘/’ . $url

    After the above edit, the slash problem is over, but still calendar isn’t functioning, and click on button doesn’t do anything. Even they don’t goes to archive page, as before editing.

    Can you guess, what could be the problem of this non-functioning?

  11. DG, are you using Windows? Can you tell me what happens if you add the following lines where you made the edit:

    echo $this->plugin_base;
    echo realpath (ABSPATH);

  12. Hey, could you please point out the current date in the calender too? It will save the place of a date time line. Thanx and a very good plugin. I really liked it and am using in one of my projects.

  13. Hi John

    Just wanted to let you know that I’ve just updated to v2.4.5, on WP 2.3.1, and I can now access the previous months without problems (I’d previously reported that the link to show the previous month wasn’t functioning for me).

    Many thanks!


  14. This calendar is a great idea, but I find it not very user friendly – yet. If you click back to a former month and choose a date from the calendar to see the entry for that day, two things happen that make the calendar painful to use.

    First when the entry loads, the calendar reverts back to the current month. So if the user has scrolled back 2 or 3 months to read those entries, they have to start all over again clicking the calendar 2 or 3 months back to see another entry for that time period. Second, the Next and Previous links disappear, so there is no way to move back or forth from the selected entry. To me that makes this calendar useless.

  15. Hey dude!
    really great plugin here! 😉

    one ask, i get everything working fine, but i click in back and it goes on month back, but the ‘next’ button doesn’t appear to go to the actual month again.. how can i solve it?

    thanks a lot!

  16. having a bit of a problem customizing the calendar. shows up one way in firefox and another in ei. i finally got it to display nicely how i want it to in ei – but now firefox is a bit off. And now when i click the next/prev month links, it puts the caption UNDER the day-of-the-week heading – which only happens in firefox :S.
    plz let me know if you need to see any of the files im using to help me figure this out:
    (ajax calendar) models/calendar.php and calendar.css
    (theme) style.css and header.php

    thank you

  17. Hige and Kwiz, this is an effect of how the WordPress calendar function works (which AJAX Calendar uses). Basically the missing links are because you have no posts for that month, and so WordPress doesn’t display anything.

  18. I’ve uploaded the newest version (2.4.5) and am using wordpress 2.3.1 but the plugin won’t activate. I’m getting the following error:

    Plugin could not be activated because it triggered a fatal error.

    Fatal error: Cannot instantiate non-existent class: __class__ in /blahdirectorieshereblah/plugins/ajax-calendar/ajax-calendar.php on line 79

  19. […] and feel to lazy to navigate through the pages, just take a glance over there. You can also use the calendar’s dropdown feature to see the titles of my posts made this month without refreshing the […]

  20. Are there any possibilities to insert an AJAX status indicator? That would be nice, because if the charge time takes a few seconds, users may think that nothing happens.

  21. I’ve downloaded v.2.4.5 from WordPress plugins & installed it, but it reports in my Admin > Plugins table that it is v2.4.4, and generates a Download Newer Version notice, saying v2.4.5 is now available. I repeated the download-install, same results. The file-name is just "ajax-calendar.zip", so to check whether anything has changed I have to download & install again. With a "ajax-calendar.2.4.5.zip" – then we know. 😉


  22. … Hope I’m not too much of a pest, but I also now notice that your local install-file-name is "ajax-calendar2.zip". *I have this file also, as my previously downloaded version.* Before actually installing (a couple days ago), I dutifully went to WordPress plugins to get the latest, which is "ajax-calendar.zip". No "2".

    It identifies itself in Admin > Plugins as v2.4.4, but is presented in the WordPress download page as v2.4.5, and generates the update notice, which can’t be appeased.

  23. Hi John! I am looking forwards to use this beautiful plugin to show only certain categories (or just one)of my blog. I have it installed via widgets on my sidebar, and it is working fine, but sowing all of the categories having posts.
    Is there any way to do what I want? I am not a programmer, and I am using the Mimbo Theme for if that matters…
    Thank you in advance…

  24. Hi everyone, I’m new to WordPress and recently installed the standard calendar and for some reason, the day does not change as days go by on the calendar. I tried removing the calendar and re-installing the Ajax version, but again the day does not change from 1/14. any ideas?


  25. Hi,

    Thanks for a real nice plugin.

    I have one question. Does AjaxCalendar2 have the ability to Add Events with hyperlinking to external websites?

    I am running WordPress v 2.3.2 with PHP 5.

    Thanks alot and keep up the great work!


  26. Newguy, the calendar (both AJAX and non) display the date of the last post, not the current date.

    David, no, the calendar links to posts only. You could create a post that contains an external link, but this would be a two-step link

  27. This plug-in was almost what i needed! Keep the work on it and it might become one of the popular WP calendars. Currently the lack of future posts keeps me away from your thing 😉

  28. […] Urban Giraffe’s Ajax Calendar – Go ahead and try it! It’s right there, near the top of my sidebar. This calendar allows readers to browse through the calendar, itself, without having to refresh the page on each click. Now, see that double-arrow button at the bottom of the calendar? Clicking it causes a linked list of an entire month’s post titles to drop down. Nice! I only installed this plug-in last night, but it’s already amongst my favorites. […]

  29. […] その名の通り「AJAX Calendar」はAJAXで制作されたWordPress用のカレンダーのプラグインです。違う月を表示する際にページ全体をリロードする必要がないため非常に便利なプラグインです。ページ全体をリロードするよりAJAXを使ったカレンダーを利用した方がサーバーの負担軽減にもなるでしょう。 […]

  30. Hi John,

    Actually it seems that an update for WP 2.5 may be needed because it doesn’t display properly on the widgets page. Instead of showing the widget in the sidebar it displays the following message:

    Fatal error: Cannot redeclare class Calendar in /home/pwr/public_html/wordpress/wp-content/plugins/ajax-calendar/models/calendar.php on line 4

  31. I confirm that I get the same error message in my 2.5 RC1 installation – hope you can fix it, I’m very keen to get this calendar working.

    Thanks for your excellent range of plug-ins. They really do give a new dimension to WordPress!

  32. I get the same error with the final 2.5 version.
    It breaks the other widgets in the widget admin panel; but the widget itself is shown fine at the blog side

  33. HI!
    I get the same Jose’s error with the final 2.5 version.

    “Fatal error: Cannot redeclare class calendar in …/blog/wp-content/plugins/ajax-calendar2/models/calendar.php on line 4”

    It works fine on side bar but cause this error on administrative widgeg section.

  34. Hi!

    many compliments for your widget, just one question:

    I’ve 2.3 wordpress version, and I use a plug-in in order to show the future posts (my website is about upcoming events) I don’t know why the Ajax Calendar doesn’t show this future posts.

    Could you hel me ?

    Thanks again for your work!!


  35. Just downloaded & installed your plugin. With respect to styling, there is an ID of wp-calendar-split that’s not in the included CSS. Is this an ID that comes from the default WP calendar or should it be in the CSS that comes with the plugin?

  36. Is the var $split_close implemented? Even on the example on this page, the text for $split_open is always displayed, and the closing text is never displayed, even though the post titles are cleared. Maybe line 160 of calendar.php is chopped off?

  37. Hello,

    I keep getting the following error while activating this plugin:

    Fatal error: Class ‘AJAX_Calendar_Widget’ not found in /usr/home/voxintro/public_html/wp-content/plugins/ajax-calendar2/ajax-calendar.php on line 43

    I use WordPress 2.3.1 and cannot update to newer version of wordpress. Help getting this plugin up and running is greatly appreciated.

  38. hello,

    may i use it to show only posts of some categories, not all posts?

    thanks in advance!
    Vinz 🙂

  39. Hi,

    Great plugin. However, there is one issue with it and that is if there is more one post on the same date, only the most recent one shows.

  40. […] Pourquoi s’amuser à recharger toute la page pour simplement changer de mois alors qu’une ancienne technologie appellée XMLHttpRequest existe ? C’est pourquoi, en cherchant sur la toile, je suis tombé sur un plugin répondant parfaitement à mes besoins : WP-Ajax-Calendar. […]

Leave a Reply

Your email address will not be published. Required fields are marked *