Alert: This function’s access is marked private. This means it is not intended for use by plugin or theme developers, only in other core functions. It is listed here for completeness.
_get_last_post_time( string $timezone, string $field, string $post_type = 'any' ): string|false
Gets the timestamp of the last time any post was modified or published.
Parameters
-
$timezone
string Required -
The timezone for the timestamp. See get_lastpostdate() .
for information on accepted values.More Arguments from get_lastpostdate( ... $timezone )
The timezone for the timestamp. Accepts'server'
,'blog'
, or'gmt'
.
'server'
uses the server's internal timezone.
'blog'
uses thepost_date
field, which proxies to the timezone set for the site.
'gmt'
uses thepost_date_gmt
field.
Default'server'
. -
$field
string Required -
Post field to check. Accepts
'date'
or'modified'
. -
$post_type
string Optional -
The post type to check. Default
'any'
.Default:
'any'
Return
string|false The timestamp in 'Y-m-d H:i:s' format, or false on failure.
Source
File: wp-includes/post.php
.
View all references
function _get_last_post_time( $timezone, $field, $post_type = 'any' ) {
global $wpdb;
if ( ! in_array( $field, array( 'date', 'modified' ), true ) ) {
return false;
}
$timezone = strtolower( $timezone );
$key = "lastpost{$field}:$timezone";
if ( 'any' !== $post_type ) {
$key .= ':' . sanitize_key( $post_type );
}
$date = wp_cache_get( $key, 'timeinfo' );
if ( false !== $date ) {
return $date;
}
if ( 'any' === $post_type ) {
$post_types = get_post_types( array( 'public' => true ) );
array_walk( $post_types, array( $wpdb, 'escape_by_ref' ) );
$post_types = "'" . implode( "', '", $post_types ) . "'";
} else {
$post_types = "'" . sanitize_key( $post_type ) . "'";
}
switch ( $timezone ) {
case 'gmt':
$date = $wpdb->get_var( "SELECT post_{$field}_gmt FROM $wpdb->posts WHERE post_status = 'publish' AND post_type IN ({$post_types}) ORDER BY post_{$field}_gmt DESC LIMIT 1" );
break;
case 'blog':
$date = $wpdb->get_var( "SELECT post_{$field} FROM $wpdb->posts WHERE post_status = 'publish' AND post_type IN ({$post_types}) ORDER BY post_{$field}_gmt DESC LIMIT 1" );
break;
case 'server':
$add_seconds_server = gmdate( 'Z' );
$date = $wpdb->get_var( "SELECT DATE_ADD(post_{$field}_gmt, INTERVAL '$add_seconds_server' SECOND) FROM $wpdb->posts WHERE post_status = 'publish' AND post_type IN ({$post_types}) ORDER BY post_{$field}_gmt DESC LIMIT 1" );
break;
}
if ( $date ) {
wp_cache_set( $key, $date, 'timeinfo' );
return $date;
}
return false;
}
Changelog
Version | Description |
---|---|
4.4.0 | The $post_type argument was added. |
3.1.0 | Introduced. |