Advertisements

get_calendar

Definition:
function get_calendar($initial = true, $echo = true) {}

Display calendar with days that have posts as links.
The calendar is cached, which will be retrieved, if it exists. If there are no posts for the month, then it will not be displayed.

Parameters

  • bool $initial: Optional, default is true. Use initial calendar names.
  • bool $echo: Optional, default is true. Set to false for return.

Defined filters

  • get_calendar
    apply_filters( 'get_calendar', $cache[$key] )
  • get_calendar
    apply_filters( 'get_calendar', $cache[$key] )

Source code

function get_calendar($initial = true, $echo = true) {

	global $wpdb, $m, $monthnum, $year, $wp_locale, $posts;



	$cache = array();

	$key = md5( $m . $monthnum . $year );

	if ( $cache = wp_cache_get( 'get_calendar', 'calendar' ) ) {

		if ( is_array($cache) && isset( $cache[ $key ] ) ) {

			if ( $echo ) {

				echo apply_filters( 'get_calendar',  $cache[$key] );

				return;

			} else {

				return apply_filters( 'get_calendar',  $cache[$key] );

			}

		}

	}



	if ( !is_array($cache) )

		$cache = array();



	// Quick check. If we have no posts at all, abort!

	if ( !$posts ) {

		$gotsome = $wpdb->get_var("SELECT 1 as test FROM $wpdb->posts WHERE post_type = 'post' AND post_status = 'publish' LIMIT 1");

		if ( !$gotsome ) {

			$cache[ $key ] = '';

			wp_cache_set( 'get_calendar', $cache, 'calendar' );

			return;

		}

	}



	if ( isset($_GET['w']) )

		$w = ''.intval($_GET['w']);



	// week_begins = 0 stands for Sunday

	$week_begins = intval(get_option('start_of_week'));



	// Let's figure out when we are

	if ( !empty($monthnum) && !empty($year) ) {

		$thismonth = ''.zeroise(intval($monthnum), 2);

		$thisyear = ''.intval($year);

	} elseif ( !empty($w) ) {

		// We need to get the month from MySQL

		$thisyear = ''.intval(substr($m, 0, 4));

		$d = (($w - 1) * 7) + 6; //it seems MySQL's weeks disagree with PHP's

		$thismonth = $wpdb->get_var("SELECT DATE_FORMAT((DATE_ADD('{$thisyear}0101', INTERVAL $d DAY) ), '%m')");

	} elseif ( !empty($m) ) {

1236

Advertisements

No comments yet... Be the first to leave a reply!

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google+ photo

You are commenting using your Google+ account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

%d bloggers like this: