Posts, Post Types: Pass the post type to get_lastpostdate()
in get_lastpostmodified()
.
This ensures that the correct values are being compared when retrieving the result for custom post types. Additionally, pass the `$post_type` parameter to `get_lastpostdate` and `get_lastpostmodified` filters. Props mikaumoto, munyagu, donmhico, johnbillion, SergeyBiryukov. Fixes #47777. git-svn-id: https://develop.svn.wordpress.org/trunk@48631 602fd350-edb4-49c9-b593-d223f7449a82
This commit is contained in:
parent
a1c40b346c
commit
581deff371
@ -6620,16 +6620,20 @@ function get_posts_by_author_sql( $post_type, $full = true, $post_author = null,
|
|||||||
* @return string The date of the last post, or false on failure.
|
* @return string The date of the last post, or false on failure.
|
||||||
*/
|
*/
|
||||||
function get_lastpostdate( $timezone = 'server', $post_type = 'any' ) {
|
function get_lastpostdate( $timezone = 'server', $post_type = 'any' ) {
|
||||||
|
$date = _get_last_post_time( $timezone, 'date', $post_type );
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Filters the most recent time that a post on the site was published.
|
* Filters the most recent time that a post on the site was published.
|
||||||
*
|
*
|
||||||
* @since 2.3.0
|
* @since 2.3.0
|
||||||
|
* @since 5.5.0 Added the `$post_type` parameter.
|
||||||
*
|
*
|
||||||
* @param string|false $date Date the last post was published. False on failure.
|
* @param string|false $date Date the last post was published. False on failure.
|
||||||
* @param string $timezone Location to use for getting the post published date.
|
* @param string $timezone Location to use for getting the post published date.
|
||||||
* See get_lastpostdate() for accepted `$timezone` values.
|
* See get_lastpostdate() for accepted `$timezone` values.
|
||||||
|
* @param string $post_type The post type to check.
|
||||||
*/
|
*/
|
||||||
return apply_filters( 'get_lastpostdate', _get_last_post_time( $timezone, 'date', $post_type ), $timezone );
|
return apply_filters( 'get_lastpostdate', $date, $timezone, $post_type );
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -6661,13 +6665,14 @@ function get_lastpostmodified( $timezone = 'server', $post_type = 'any' ) {
|
|||||||
* @param string $post_type The post type to check.
|
* @param string $post_type The post type to check.
|
||||||
*/
|
*/
|
||||||
$lastpostmodified = apply_filters( 'pre_get_lastpostmodified', false, $timezone, $post_type );
|
$lastpostmodified = apply_filters( 'pre_get_lastpostmodified', false, $timezone, $post_type );
|
||||||
|
|
||||||
if ( false !== $lastpostmodified ) {
|
if ( false !== $lastpostmodified ) {
|
||||||
return $lastpostmodified;
|
return $lastpostmodified;
|
||||||
}
|
}
|
||||||
|
|
||||||
$lastpostmodified = _get_last_post_time( $timezone, 'modified', $post_type );
|
$lastpostmodified = _get_last_post_time( $timezone, 'modified', $post_type );
|
||||||
|
$lastpostdate = get_lastpostdate( $timezone, $post_type );
|
||||||
|
|
||||||
$lastpostdate = get_lastpostdate( $timezone );
|
|
||||||
if ( $lastpostdate > $lastpostmodified ) {
|
if ( $lastpostdate > $lastpostmodified ) {
|
||||||
$lastpostmodified = $lastpostdate;
|
$lastpostmodified = $lastpostdate;
|
||||||
}
|
}
|
||||||
@ -6676,13 +6681,15 @@ function get_lastpostmodified( $timezone = 'server', $post_type = 'any' ) {
|
|||||||
* Filters the most recent time that a post was modified.
|
* Filters the most recent time that a post was modified.
|
||||||
*
|
*
|
||||||
* @since 2.3.0
|
* @since 2.3.0
|
||||||
|
* @since 5.5.0 Added the `$post_type` parameter.
|
||||||
*
|
*
|
||||||
* @param string|false $lastpostmodified The most recent time that a post was modified, in 'Y-m-d H:i:s' format.
|
* @param string|false $lastpostmodified The most recent time that a post was modified, in 'Y-m-d H:i:s' format.
|
||||||
* False on failure.
|
* False on failure.
|
||||||
* @param string $timezone Location to use for getting the post modified date.
|
* @param string $timezone Location to use for getting the post modified date.
|
||||||
* See get_lastpostdate() for accepted `$timezone` values.
|
* See get_lastpostdate() for accepted `$timezone` values.
|
||||||
|
* @param string $post_type The post type to check.
|
||||||
*/
|
*/
|
||||||
return apply_filters( 'get_lastpostmodified', $lastpostmodified, $timezone );
|
return apply_filters( 'get_lastpostmodified', $lastpostmodified, $timezone, $post_type );
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
39
tests/phpunit/tests/post/getLastPostDate.php
Normal file
39
tests/phpunit/tests/post/getLastPostDate.php
Normal file
@ -0,0 +1,39 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @group post
|
||||||
|
*/
|
||||||
|
class Tests_Post_GetLastPostDate extends WP_UnitTestCase {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @ticket 47777
|
||||||
|
*/
|
||||||
|
public function test_get_lastpostdate() {
|
||||||
|
$post_post_date = '2020-01-30 16:09:28';
|
||||||
|
$book_post_date = '2019-02-28 18:11:30';
|
||||||
|
|
||||||
|
// Register book post type.
|
||||||
|
register_post_type( 'book', array( 'has_archive' => true ) );
|
||||||
|
|
||||||
|
// Create a simple post.
|
||||||
|
$simple_post_id = self::factory()->post->create(
|
||||||
|
array(
|
||||||
|
'post_title' => 'Simple Post',
|
||||||
|
'post_type' => 'post',
|
||||||
|
'post_date' => $post_post_date,
|
||||||
|
)
|
||||||
|
);
|
||||||
|
|
||||||
|
// Create custom type post.
|
||||||
|
$book_cpt_id = self::factory()->post->create(
|
||||||
|
array(
|
||||||
|
'post_title' => 'Book CPT',
|
||||||
|
'post_type' => 'book',
|
||||||
|
'post_date' => $book_post_date,
|
||||||
|
)
|
||||||
|
);
|
||||||
|
|
||||||
|
$this->assertEquals( $post_post_date, get_lastpostdate( 'blog', 'post' ) );
|
||||||
|
$this->assertEquals( $book_post_date, get_lastpostdate( 'blog', 'book' ) );
|
||||||
|
}
|
||||||
|
}
|
67
tests/phpunit/tests/post/getLastPostModified.php
Normal file
67
tests/phpunit/tests/post/getLastPostModified.php
Normal file
@ -0,0 +1,67 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @group post
|
||||||
|
*/
|
||||||
|
class Tests_Post_GetLastPostModified extends WP_UnitTestCase {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @ticket 47777
|
||||||
|
*/
|
||||||
|
public function test_get_lastpostmodified() {
|
||||||
|
global $wpdb;
|
||||||
|
|
||||||
|
$post_post_date = '2020-01-30 16:09:28';
|
||||||
|
$post_post_modified = '2020-02-28 17:10:29';
|
||||||
|
|
||||||
|
$book_post_date = '2019-03-30 20:09:28';
|
||||||
|
$book_post_modified = '2019-04-30 21:10:29';
|
||||||
|
|
||||||
|
// Register book post type.
|
||||||
|
register_post_type( 'book', array( 'has_archive' => true ) );
|
||||||
|
|
||||||
|
// Create a simple post.
|
||||||
|
$simple_post_id = self::factory()->post->create(
|
||||||
|
array(
|
||||||
|
'post_title' => 'Simple Post',
|
||||||
|
'post_type' => 'post',
|
||||||
|
'post_date' => $post_post_date,
|
||||||
|
)
|
||||||
|
);
|
||||||
|
|
||||||
|
// Create custom type post.
|
||||||
|
$book_cpt_id = self::factory()->post->create(
|
||||||
|
array(
|
||||||
|
'post_title' => 'Book CPT',
|
||||||
|
'post_type' => 'book',
|
||||||
|
'post_date' => $book_post_date,
|
||||||
|
)
|
||||||
|
);
|
||||||
|
|
||||||
|
// Update `post_modified` and `post_modified_gmt`.
|
||||||
|
$wpdb->update(
|
||||||
|
$wpdb->posts,
|
||||||
|
array(
|
||||||
|
'post_modified' => $post_post_modified,
|
||||||
|
'post_modified_gmt' => $post_post_modified,
|
||||||
|
),
|
||||||
|
array(
|
||||||
|
'ID' => $simple_post_id,
|
||||||
|
)
|
||||||
|
);
|
||||||
|
|
||||||
|
$wpdb->update(
|
||||||
|
$wpdb->posts,
|
||||||
|
array(
|
||||||
|
'post_modified' => $book_post_modified,
|
||||||
|
'post_modified_gmt' => $book_post_modified,
|
||||||
|
),
|
||||||
|
array(
|
||||||
|
'ID' => $book_cpt_id,
|
||||||
|
)
|
||||||
|
);
|
||||||
|
|
||||||
|
$this->assertEquals( $post_post_modified, get_lastpostmodified( 'blog', 'post' ) );
|
||||||
|
$this->assertEquals( $book_post_modified, get_lastpostmodified( 'blog', 'book' ) );
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user