I want to customize or replace the default calendar, similar to the default widget, but with Ajax next and previous months loading.
Ideally I would like to be able to do that (red dots are dates with posts):
The left and right parts are preview of next and previous months. But that will be a bit hard to do. Just a simple WordPress calendar with Ajax next/previous and link to days containing posts will be enough.
Maybe there is a way (a trick ?) to add Ajax months loading on the default calendar widget. The default one is simple and perfect, but this feature is missing.
How could I do that?
I want to customize or replace the default calendar, similar to the default widget, but with Ajax next and previous months loading.
Ideally I would like to be able to do that (red dots are dates with posts):
The left and right parts are preview of next and previous months. But that will be a bit hard to do. Just a simple WordPress calendar with Ajax next/previous and link to days containing posts will be enough.
Maybe there is a way (a trick ?) to add Ajax months loading on the default calendar widget. The default one is simple and perfect, but this feature is missing.
How could I do that?
Share Improve this question edited Jan 8, 2021 at 0:00 Glorfindel 6093 gold badges10 silver badges18 bronze badges asked Mar 24, 2013 at 22:19 BenyBeny 1014 bronze badges 01 Answer
Reset to default 1Interesting task indeed. Here's what I would do:
- Create my own plugin with a widget. You can always use plugin boilerplate or widget boilerplate as starting points.
- My widget would look like the default calendar, except it would also have the 'prev'/'next' links, as you mentioned.
- I would then copy-paste and adjust the
get_calendar()
function located inwp-includes/general-template.php
, which is responsible for populating the calendar HTML. I'd call it something nice and unique, likemy_get_calendar()
. - Connect my widget with my function via AJAX calls triggered by clicks on 'prev'/'next' links, passing month and year as parameters. The
my_get_calendar()
function would catch those and return either JSON or HTML (depending on where you prefer the markup generation to occur - either in the front-end or back-end). - In my widget's JS on
document.ready
I would call my back-end function to initially populate the calendar, and then attach click handlers to 'prev'/'next' links. - Share end result with the world by either posting it on GitHub or in WordPress plugins repository, or both.