Posts: Add `$post` parameter to modified date and time functions.

Unifies the APIs for getting a post's modified date or time with getting a post's date or time.

Adds the `$post` parameter to the functions `get_the_modified_date` and `get_the_modified_time`.

Adds the `$post` parameter to the filters `get_the_modified_date` and `get_the_modified_time`.

Props Soean, lukecavanagh.
Fixes #37059.


git-svn-id: https://develop.svn.wordpress.org/trunk@37738 602fd350-edb4-49c9-b593-d223f7449a82
This commit is contained in:
Peter Wilson 2016-06-17 05:11:29 +00:00
parent 0f319917c4
commit 54f1c097a6
2 changed files with 85 additions and 19 deletions

View File

@ -2254,26 +2254,37 @@ function the_modified_date( $d = '', $before = '', $after = '', $echo = true ) {
* Retrieve the date on which the post was last modified.
*
* @since 2.1.0
* @since 4.6.0 The `$post` parameter was added.
*
* @param string $d Optional. PHP date format. Defaults to the "date_format" option
* @return string
* @param string $d Optional. PHP date format defaults to the date_format option if not specified.
* @param int|WP_Post $post Optional. Post ID or WP_Post object. Default current post.
* @return false|string Date the current post was modified. False on failure.
*/
function get_the_modified_date($d = '') {
if ( '' == $d )
$the_time = get_post_modified_time(get_option('date_format'), null, null, true);
else
$the_time = get_post_modified_time($d, null, null, true);
function get_the_modified_date( $d = '', $post = null ) {
$post = get_post( $post );
if ( ! $post ) {
return false;
}
if ( empty( $d ) ) {
$the_time = get_post_modified_time( get_option( 'date_format' ), false, $post, true );
} else {
$the_time = get_post_modified_time( $d, false, $post, true );
}
/**
* Filters the date a post was last modified.
*
* @since 2.1.0
* @since 4.6.0 The `$post` parameter was added.
*
* @param string $the_time The formatted date.
* @param string $d PHP date format. Defaults to value specified in
* 'date_format' option.
* @param string $the_time The formatted date.
* @param string $d PHP date format. Defaults to value specified in
* 'date_format' option.
* @param WP_Post $post WP_Post object.
*/
return apply_filters( 'get_the_modified_date', $the_time, $d );
return apply_filters( 'get_the_modified_date', $the_time, $d, $post );
}
/**
@ -2397,27 +2408,40 @@ function the_modified_time($d = '') {
* Retrieve the time at which the post was last modified.
*
* @since 2.0.0
* @since 4.6.0 The `$post` parameter was added.
*
* @param string $d Optional Either 'G', 'U', or php date format defaults to the value specified in the time_format option.
* @return string
* @param string $d Optional. Format to use for retrieving the time the post
* was modified. Either 'G', 'U', or php date format defaults
* to the value specified in the time_format option. Default empty.
* @param int|WP_Post $post Optional. Post ID or WP_Post object. Default current post.
* @return false|string Formatted date string or Unix timestamp. False on failure.
*/
function get_the_modified_time($d = '') {
if ( '' == $d )
$the_time = get_post_modified_time(get_option('time_format'), null, null, true);
else
$the_time = get_post_modified_time($d, null, null, true);
function get_the_modified_time( $d = '', $post = null ) {
$post = get_post( $post );
if ( ! $post ) {
return false;
}
if ( empty( $d ) ) {
$the_time = get_post_modified_time( get_option( 'time_format' ), false, $post, true );
} else {
$the_time = get_post_modified_time( $d, false, $post, true );
}
/**
* Filters the localized time a post was last modified.
*
* @since 2.0.0
* @since 4.6.0 The `$post` parameter was added.
*
* @param string $the_time The formatted time.
* @param string $d Format to use for retrieving the time the post was
* written. Accepts 'G', 'U', or php date format. Defaults
* to value specified in 'time_format' option.
* @param WP_Post $post WP_Post object.
*/
return apply_filters( 'get_the_modified_time', $the_time, $d );
return apply_filters( 'get_the_modified_time', $the_time, $d, $post );
}
/**

View File

@ -345,4 +345,46 @@ class Tests_General_Template extends WP_UnitTestCase {
$this->custom_logo_id = $this->_make_attachment( $upload );
return $this->custom_logo_id;
}
/**
* Test get_the_modified_time
*
* @ticket 37059
*
* @since 4.6.0
*/
function test_get_the_modified_time_default() {
$details = array(
'post_date' => '2016-01-21 15:34:36',
'post_date_gmt' => '2016-01-21 15:34:36',
);
$post_id = $this->factory->post->create( $details );
$post = get_post( $post_id );
$GLOBALS['post'] = $post;
$expected = '1453390476';
$d = 'G';
$actual = get_the_modified_time( $d );
$this->assertEquals( $expected, $actual );
}
/**
* Test get_the_modified_time with post_id parameter.
*
* @ticket 37059
*
* @since 4.6.0
*/
function test_get_the_modified_time_with_post_id() {
$details = array(
'post_date' => '2016-01-21 15:34:36',
'post_date_gmt' => '2016-01-21 15:34:36',
);
$post_id = $this->factory->post->create( $details );
$d = 'G';
$expected = '1453390476';
$actual = get_the_modified_time( $d, $post_id );
$this->assertEquals( $expected, $actual );
}
}