wp_get_post_revision()WP 2.6.0

Получает ревизию поста по указанной ID ревизии. Если записи с указанным ID нет или это не ревизия вернет null.

Ревизиями считаются записи, у которых поле post_type = revision.

Работает на основе: get_post()
1 раз — 0.000602 сек (медленно) | 50000 раз — 1.12 сек (быстро)

Хуков нет.

Возвращает

WP_Post|Массив|null.

  • WP_Post при успехе, если $output = OBJECT.
  • массив при успехе, если $output = ARRAY_A или ARRAY_N.
  • null при ошибке (указанный пост не ревизия или пост не был найден).

Использование

wp_get_post_revision( $post, $output, $filter );
$post(число/WP_Post) (обязательный) (передается по ссылке - &)
ID или объект ревизии записи.
$output(строка)
В каком виде возвращать данные. Может быть: OBJECT, ARRAY_A (ассоциативный массив) или ARRAY_N (пронумерованный массив).
По умолчанию: OBJECT
$filter(строка)
Как очищать возвращаемые поля. Смотрите: sanitize_post_field().
По умолчанию: 'raw'

Примеры

0

#1 Получим объект записи (WP_Post), который должен быть ревизией записи

$revision_id = 15;
$revision = wp_get_post_revision( $revision_id );

if( $revision ){
	// да это ревизия
	print_r( $revision );
}

/* Выведет
WP_Post Object
(
	[ID] => 1008
	[post_author] => 1
	[post_date] => 2015-08-26 19:15:42
	[post_date_gmt] => 2015-08-26 15:15:42
	[post_content] => Контент
	[post_title] => Основные способы образования
	[post_excerpt] => 
	[post_status] => inherit
	[comment_status] => closed
	[ping_status] => closed
	[post_password] => 
	[post_name] => 997-revision-v1
	[to_ping] => 
	[pinged] => 
	[post_modified] => 2015-08-26 19:15:42
	[post_modified_gmt] => 2015-08-26 15:15:42
	[post_content_filtered] => 
	[post_parent] => 997
	[guid] => http://example.com/997-revision-v1/
	[menu_order] => 0
	[post_type] => revision
	[post_mime_type] => 
	[comment_count] => 0
	[filter] => raw
)
*/
0

#2 Проверка является ли пост ревизией

Код функции wp_is_post_revision(), в котором видно как работает эта функция:

function wp_is_post_revision( $post ) {
	if ( ! $post = wp_get_post_revision( $post ) ) {
		return false;
	}

	return (int) $post->post_parent;
}

Список изменений

С версии 2.6.0 Введена.

Код wp_get_post_revision() WP 6.5.2

function wp_get_post_revision( &$post, $output = OBJECT, $filter = 'raw' ) {
	$revision = get_post( $post, OBJECT, $filter );

	if ( ! $revision ) {
		return $revision;
	}

	if ( 'revision' !== $revision->post_type ) {
		return null;
	}

	if ( OBJECT === $output ) {
		return $revision;
	} elseif ( ARRAY_A === $output ) {
		$_revision = get_object_vars( $revision );
		return $_revision;
	} elseif ( ARRAY_N === $output ) {
		$_revision = array_values( get_object_vars( $revision ) );
		return $_revision;
	}

	return $revision;
}