The get_calendar WordPress PHP filter allows you to modify the HTML output of the calendar.
Usage
add_filter('get_calendar', 'my_custom_calendar', 10, 1); function my_custom_calendar($calendar_output) { // your custom code here return $calendar_output; }
Parameters
$calendar_output
(string): The HTML output of the calendar.
More information
See WordPress Developer Resources: get_calendar
Examples
Change the calendar table CSS class
Customize the CSS class of the calendar table.
add_filter('get_calendar', 'change_calendar_css_class', 10, 1); function change_calendar_css_class($calendar_output) { $calendar_output = str_replace('wp-calendar', 'my-custom-calendar', $calendar_output); return $calendar_output; }
Add a custom title to the calendar
Insert a custom title above the calendar.
add_filter('get_calendar', 'add_calendar_title', 10, 1); function add_calendar_title($calendar_output) { $title = '<h3>My Custom Calendar</h3>'; $calendar_output = $title . $calendar_output; return $calendar_output; }
Hide the calendar navigation links
Remove the navigation links from the calendar.
add_filter('get_calendar', 'hide_calendar_navigation', 10, 1); function hide_calendar_navigation($calendar_output) { $pattern = '/<p id="calendar-nav">.*?<\/p>/s'; $calendar_output = preg_replace($pattern, '', $calendar_output); return $calendar_output; }
Wrap the calendar in a custom div
Add a custom div around the calendar for styling purposes.
add_filter('get_calendar', 'wrap_calendar_in_custom_div', 10, 1); function wrap_calendar_in_custom_div($calendar_output) { $calendar_output = '<div class="my-custom-calendar-wrapper">' . $calendar_output . '</div>'; return $calendar_output; }
Highlight today’s date with a custom CSS class
Add a custom CSS class to highlight today’s date in the calendar.
add_filter('get_calendar', 'highlight_todays_date', 10, 1); function highlight_todays_date($calendar_output) { $today = date('j'); $pattern = '/<td[^>]*>' . $today . '<\/td>/'; $replacement = '<td class="today-highlight">' . $today . '</td>'; $calendar_output = preg_replace($pattern, $replacement, $calendar_output); return $calendar_output; }
Add a custom CSS class to the calendar
Add a custom CSS class to the calendar’s outer <table>
element.
add_filter('get_calendar', 'add_custom_calendar_class'); function add_custom_calendar_class($calendar_output) { $calendar_output = str_replace('<table id="wp-calendar">', '<table id="wp-calendar" class="my-custom-class">', $calendar_output); return $calendar_output; }
Replace default month abbreviations
Replace the default month abbreviations with custom ones.
add_filter('get_calendar', 'replace_month_abbreviations'); function replace_month_abbreviations($calendar_output) { $search = array('Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'); $replace = array('J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'); $calendar_output = str_replace($search, $replace, $calendar_output); return $calendar_output; }
Highlight weekends in the calendar
Highlight weekends (Saturday and Sunday) in the calendar with a custom CSS class.
add_filter('get_calendar', 'highlight_weekends'); function highlight_weekends($calendar_output) { $calendar_output = preg_replace('/<td>(\d+)<\/td>/', '<td class="highlight">$1</td>', $calendar_output); return $calendar_output; }
Add custom content before the calendar
Add custom content, such as a title, before the calendar output.
add_filter('get_calendar', 'add_content_before_calendar'); function add_content_before_calendar($calendar_output) { $custom_content = '<h2>My Custom Calendar</h2>'; $calendar_output = $custom_content . $calendar_output; return $calendar_output; }
Remove navigation links from the calendar
Remove the previous and next month navigation links from the calendar output.
add_filter('get_calendar', 'remove_calendar_navigation'); function remove_calendar_navigation($calendar_output) { $calendar_output = preg_replace('/<span id="[^"]+" class="[^"]+">«<\/span>/', '', $calendar_output); $calendar_output = preg_replace('/<span id="[^"]+" class="[^"]+">»<\/span>/', '', $calendar_output); return $calendar_output; }