From 2a163fa733746c07a2f52bb0a1938958622cf82a Mon Sep 17 00:00:00 2001 From: Sergey Biryukov Date: Thu, 23 May 2019 00:37:56 +0000 Subject: [PATCH] Date/Time: Return early from `the_weekday()` and `the_weekday_date()` if we're not in the loop. Restore `$previousweekday` global usage in `the_weekday_date()`, so it could still be used simultaneously with `the_date()`. Partially reverts [45378]. See #47354. git-svn-id: https://develop.svn.wordpress.org/trunk@45379 602fd350-edb4-49c9-b593-d223f7449a82 --- src/wp-includes/general-template.php | 28 ++++++++++++++++++++-------- tests/phpunit/tests/date/theDate.php | 8 ++++---- 2 files changed, 24 insertions(+), 12 deletions(-) diff --git a/src/wp-includes/general-template.php b/src/wp-includes/general-template.php index e88713425b..be46abad25 100644 --- a/src/wp-includes/general-template.php +++ b/src/wp-includes/general-template.php @@ -2682,7 +2682,13 @@ function get_post_modified_time( $d = 'U', $gmt = false, $post = null, $translat function the_weekday() { global $wp_locale; - $the_weekday = $wp_locale->get_weekday( mysql2date( 'w', get_post()->post_date, false ) ); + $post = get_post(); + + if ( ! $post ) { + return; + } + + $the_weekday = $wp_locale->get_weekday( get_post_time( 'w', false, $post ) ); /** * Filters the weekday on which the post was written, for display. @@ -2702,23 +2708,29 @@ function the_weekday() { * * @since 0.71 * - * @global WP_Locale $wp_locale The WordPress date and time locale object. - * @global string $currentday The day of the current post in the loop. - * @global string $previousday The day of the previous post in the loop. + * @global WP_Locale $wp_locale The WordPress date and time locale object. + * @global string $currentday The day of the current post in the loop. + * @global string $previousweekday The day of the previous post in the loop. * * @param string $before Optional. Output before the date. * @param string $after Optional. Output after the date. */ function the_weekday_date( $before = '', $after = '' ) { - global $wp_locale, $currentday, $previousday; + global $wp_locale, $currentday, $previousweekday; + + $post = get_post(); + + if ( ! $post ) { + return; + } $the_weekday_date = ''; - if ( is_new_day() ) { + if ( $currentday !== $previousweekday ) { $the_weekday_date .= $before; - $the_weekday_date .= $wp_locale->get_weekday( mysql2date( 'w', get_post()->post_date, false ) ); + $the_weekday_date .= $wp_locale->get_weekday( get_post_time( 'w', false, $post ) ); $the_weekday_date .= $after; - $previousday = $currentday; + $previousweekday = $currentday; } /** diff --git a/tests/phpunit/tests/date/theDate.php b/tests/phpunit/tests/date/theDate.php index 31bc89e90b..1f6c1d1a42 100644 --- a/tests/phpunit/tests/date/theDate.php +++ b/tests/phpunit/tests/date/theDate.php @@ -138,14 +138,14 @@ class Tests_Date_TheDate extends WP_UnitTestCase { ); ob_start(); - $GLOBALS['currentday'] = '18.09.15'; - $GLOBALS['previousday'] = '17.09.15'; + $GLOBALS['currentday'] = '18.09.15'; + $GLOBALS['previousweekday'] = '17.09.15'; the_weekday_date(); $this->assertEquals( 'Wednesday', ob_get_clean() ); ob_start(); - $GLOBALS['currentday'] = '18.09.15'; - $GLOBALS['previousday'] = '17.09.15'; + $GLOBALS['currentday'] = '18.09.15'; + $GLOBALS['previousweekday'] = '17.09.15'; the_weekday_date( 'before ', ' after' ); $this->assertEquals( 'before Wednesday after', ob_get_clean() ); }