wordpress / latest / functions / _get_last_post_time.html

_get_last_post_time( string $timezone, string $field, string $post_type = 'any' ): string|false

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.

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 the post_date field, which proxies to the timezone set for the site.
'gmt' uses the post_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;
}

Uses

Uses Description

Used By

Used By Description

Changelog

Version Description
4.4.0 The $post_type argument was added.
3.1.0 Introduced.

© 2003–2022 WordPress Foundation
Licensed under the GNU GPLv2+ License.
https://developer.wordpress.org/reference/functions/_get_last_post_time