日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > php >内容正文

php

PHP Calendar 函数,wordpress函数get_calendar()用法示例

發布時間:2025/3/12 php 61 豆豆
生活随笔 收集整理的這篇文章主要介紹了 PHP Calendar 函数,wordpress函数get_calendar()用法示例 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

get_calendar( bool $initial = true, bool $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.

參數

$initial

(bool)

(Optional)

Use initial calendar names.

Default value: true

$echo

(bool)

(Optional)

Set to false for return.

Default value: true

返回值

(string|void) String when retrieving.

源代碼

File: wp-includes/general-template.php

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

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

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

$cache = wp_cache_get( 'get_calendar', 'calendar' );

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

/** This filter is documented in wp-includes/general-template.php */

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

if ( $echo ) {

echo $output;

return;

}

return $output;

}

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 = (int) $_GET['w'];

}

// week_begins = 0 stands for Sunday

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

$ts = current_time( 'timestamp' );

// Let's figure out when we are

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

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

$thisyear = (int) $year;

} elseif ( ! empty( $w ) ) {

// We need to get the month from MySQL

$thisyear = (int) substr( $m, 0, 4 );

//it seems MySQL's weeks disagree with PHP's

$d = ( ( $w - 1 ) * 7 ) + 6;

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

} elseif ( ! empty( $m ) ) {

$thisyear = (int) substr( $m, 0, 4 );

if ( strlen( $m ) < 6 ) {

$thismonth = '01';

} else {

$thismonth = zeroise( (int) substr( $m, 4, 2 ), 2 );

}

} else {

$thisyear = gmdate( 'Y', $ts );

$thismonth = gmdate( 'm', $ts );

}

$unixmonth = mktime( 0, 0 , 0, $thismonth, 1, $thisyear );

$last_day = date( 't', $unixmonth );

// Get the next and previous month and year with at least one post

$previous = $wpdb->get_row("SELECT MONTH(post_date) AS month, YEAR(post_date) AS year

FROM $wpdb->posts

WHERE post_date < '$thisyear-$thismonth-01'

AND post_type = 'post' AND post_status = 'publish'

ORDER BY post_date DESC

LIMIT 1");

$next = $wpdb->get_row("SELECT MONTH(post_date) AS month, YEAR(post_date) AS year

FROM $wpdb->posts

WHERE post_date > '$thisyear-$thismonth-{$last_day} 23:59:59'

AND post_type = 'post' AND post_status = 'publish'

ORDER BY post_date ASC

LIMIT 1");

/* translators: Calendar caption: 1: month name, 2: 4-digit year */

$calendar_caption = _x('%1$s %2$s', 'calendar caption');

$calendar_output = '

$calendar_caption,

$wp_locale->get_month( $thismonth ),

date( 'Y', $unixmonth )

) . '

';

$myweek = array();

for ( $wdcount = 0; $wdcount <= 6; $wdcount++ ) {

$myweek[] = $wp_locale->get_weekday( ( $wdcount + $week_begins ) % 7 );

}

foreach ( $myweek as $wd ) {

$day_name = $initial ? $wp_locale->get_weekday_initial( $wd ) : $wp_locale->get_weekday_abbrev( $wd );

$wd = esc_attr( $wd );

$calendar_output .= "\n\t\t

$day_name";

}

$calendar_output .= '

';

if ( $previous ) {

$calendar_output .= "\n\t\t".'

? ' .

$wp_locale->get_month_abbrev( $wp_locale->get_month( $previous->month ) ) .

'

';

} else {

$calendar_output .= "\n\t\t".'

?';

}

$calendar_output .= "\n\t\t".'

?';

if ( $next ) {

$calendar_output .= "\n\t\t".'

' .

$wp_locale->get_month_abbrev( $wp_locale->get_month( $next->month ) ) .

' ?

';

} else {

$calendar_output .= "\n\t\t".'

?';

}

$calendar_output .= '

';

$daywithpost = array();

// Get days with posts

$dayswithposts = $wpdb->get_results("SELECT DISTINCT DAYOFMONTH(post_date)

FROM $wpdb->posts WHERE post_date >= '{$thisyear}-{$thismonth}-01 00:00:00'

AND post_type = 'post' AND post_status = 'publish'

AND post_date <= '{$thisyear}-{$thismonth}-{$last_day} 23:59:59'", ARRAY_N);

if ( $dayswithposts ) {

foreach ( (array) $dayswithposts as $daywith ) {

$daywithpost[] = $daywith[0];

}

}

// See how much we should pad in the beginning

$pad = calendar_week_mod( date( 'w', $unixmonth ) - $week_begins );

if ( 0 != $pad ) {

$calendar_output .= "\n\t\t".'

?';

}

$newrow = false;

$daysinmonth = (int) date( 't', $unixmonth );

for ( $day = 1; $day <= $daysinmonth; ++$day ) {

if ( isset($newrow) && $newrow ) {

$calendar_output .= "\n\t

\n\t\n\t\t";

}

$newrow = false;

if ( $day == gmdate( 'j', $ts ) &&

$thismonth == gmdate( 'm', $ts ) &&

$thisyear == gmdate( 'Y', $ts ) ) {

$calendar_output .= '

';

} else {

$calendar_output .= '

';

}

if ( in_array( $day, $daywithpost ) ) {

// any posts today?

$date_format = date( _x( 'F j, Y', 'daily archives date format' ), strtotime( "{$thisyear}-{$thismonth}-{$day}" ) );

/* translators: Post calendar label. 1: Date */

$label = sprintf( __( 'Posts published on %s' ), $date_format );

$calendar_output .= sprintf(

'%s',

get_day_link( $thisyear, $thismonth, $day ),

esc_attr( $label ),

$day

);

} else {

$calendar_output .= $day;

}

$calendar_output .= '

';

if ( 6 == calendar_week_mod( date( 'w', mktime(0, 0 , 0, $thismonth, $day, $thisyear ) ) - $week_begins ) ) {

$newrow = true;

}

}

$pad = 7 - calendar_week_mod( date( 'w', mktime( 0, 0 , 0, $thismonth, $day, $thisyear ) ) - $week_begins );

if ( $pad != 0 && $pad != 7 ) {

$calendar_output .= "\n\t\t".'

?';

}

$calendar_output .= "\n\t

\n\t\n\t";

$cache[ $key ] = $calendar_output;

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

if ( $echo ) {

/**

* Filters the HTML calendar output.

*

* @since 3.0.0

*

* @param string $calendar_output HTML output of the calendar.

*/

echo apply_filters( 'get_calendar', $calendar_output );

return;

}

/** This filter is documented in wp-includes/general-template.php */

return apply_filters( 'get_calendar', $calendar_output );

}

更新日志

Version

描述

1.0.0

Introduced.

相關函數

Uses

wp-includes/cache.php:

wp_cache_get()

wp-includes/cache.php:

wp_cache_set()

wp-includes/l10n.php:

_x()

wp-includes/l10n.php:

__()

wp-includes/formatting.php:

esc_attr()

wp-includes/formatting.php:

zeroise()

wp-includes/general-template.php:

calendar_week_mod()

wp-includes/general-template.php:

get_calendar

wp-includes/functions.php:

current_time()

wp-includes/class-wp-locale.php:

WP_Locale::get_month()

wp-includes/class-wp-locale.php:

WP_Locale::get_month_abbrev()

wp-includes/class-wp-locale.php:

WP_Locale::get_weekday()

wp-includes/class-wp-locale.php:

WP_Locale::get_weekday_initial()

wp-includes/class-wp-locale.php:

WP_Locale::get_weekday_abbrev()

wp-includes/link-template.php:

get_month_link()

wp-includes/link-template.php:

get_day_link()

wp-includes/plugin.php:

apply_filters()

wp-includes/option.php:

get_option()

wp-includes/wp-db.php:

wpdb::get_var()

wp-includes/wp-db.php:

wpdb::get_row()

wp-includes/wp-db.php:

wpdb::get_results()

Show 16 more uses

Used By

wp-includes/widgets/class-wp-widget-calendar.php:

WP_Widget_Calendar::widget()

總結

以上是生活随笔為你收集整理的PHP Calendar 函数,wordpress函数get_calendar()用法示例的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。