WordPress как на ладони
Очень Удобный и Быстрый Хостинг для сайтов на WordPress. Пользуюсь сам и вам рекомендую!

wp_get_post_revisions()WP 2.6.0

Получает все ревизии (редакции, изменения) указанной записи (поста).

Подробнее про ревизии читайте в описании функции wp_revisions_to_keep().

За базовое включение ревизий отвечает константа WP_POST_REVISIONS, которую нужно определить в плагине WP или раньше.

if( ! defined('WP_POST_REVISIONS') ) define( 'WP_POST_REVISIONS', 5 );

Чтобы ревизии поддерживались новыми типами записей, при регистрации им нужно указать поддержку ревизий: параметр 'supports' в register_post_type()

post_type_supports( $post->post_type, 'revisions' );

Если нужно добавить поддержку ревизий после того, как тип записи зарегистрирован, используйте add_post_type_support().

Также изменить количество ревизий можно через хук wp_revisions_to_keep. Однако он не будет работать, если тип записи не поддерживает ревизии...

Работает на основе: get_children()
Основа для: wp_save_post_revision()

Хуков нет.

Возвращает

WP_Post[]|int[]. Массив объектов записей-ревизий или array() если ревизий нет.

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

wp_get_post_revisions( $post_id, $args );
$post_id(число/WP_Post)
ID записи, ревизии которой нужно получить. Можно передать объект записи.
По умолчанию: global $post
$args(строка/массив)
Дополнительные параметры. Все параметры которые принимает get_children(). Этот параметр чаще всего, использовать не нужно.
По умолчанию: null

Примеры

0

#1 Получим последнюю редакцию записи

$post_id = 999;
$revisions = wp_get_post_revisions( $post_id );

$last_revision = false;
// Получим последнюю версию но не autosave
foreach ( $revisions as $revision ) {
	if ( false !== strpos( $revision->post_name, "{$revision->post_parent}-revision" ) ) {
		$last_revision = $revision;
		break;
	}
}
0

#2 Пример того, что выводит функция

$revisions = wp_get_post_revisions( 128 );

/* ревизии записи 128
Array (
	[22] => WP_Post Object  (
			[ID]                    => 22
			[post_author]           => 0
			[post_date]             => 2017-02-21 01:41:45
			[post_date_gmt]         => 2017-02-20 22:41:45
			[post_content]          => Контент ревизии ...
			[post_title]            => Рецепт мороженого
			[post_excerpt]          =>
			[post_status]           => inherit
			[comment_status]        => closed
			[ping_status]           => closed
			[post_password]         =>
			[post_name]             => 128-revision-v1
			[to_ping]               =>
			[pinged]                =>
			[post_modified]         => 2017-02-21 01:41:45
			[post_modified_gmt]     => 2017-02-20 22:41:45
			[post_content_filtered] =>
			[post_parent]           => 128
			[guid]                  => http://example.com/recept-morojenogo/128-revision-v1.html
			[menu_order]            => 0
			[post_type]             => revision
			[post_mime_type]        =>
			[comment_count]         => 0
			[filter]                => raw
		)

	[19] => WP_Post Object (
			[ID]                    => 19
			[post_author]           => 0
			[post_date]             => 2017-02-19 15:40:48
			[post_date_gmt]         => 2017-02-19 12:40:48
			[post_content]          => Конетнт ревизии ...
			[post_title]            => Рецепт мороженого
			[post_excerpt]          =>
			[post_status]           => inherit
			[comment_status]        => closed
			[ping_status]           => closed
			[post_password]         =>
			[post_name]             => 128-revision-v1
			[to_ping]               =>
			[pinged]                =>
			[post_modified]         => 2017-02-19 15:40:48
			[post_modified_gmt]     => 2017-02-19 12:40:48
			[post_content_filtered] =>
			[post_parent]           => 128
			[guid]                  => http://example.com/recept-morojenogo/128-revision-v1.html
			[menu_order]            => 0
			[post_type]             => revision
			[post_mime_type]        =>
			[comment_count]         => 0
			[filter]                => raw
		)

	[12] => WP_Post Object (
			...
		)

)
*/

Заметки

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

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

Код wp_get_post_revisions() WP 6.5.2

function wp_get_post_revisions( $post = 0, $args = null ) {
	$post = get_post( $post );

	if ( ! $post || empty( $post->ID ) ) {
		return array();
	}

	$defaults = array(
		'order'         => 'DESC',
		'orderby'       => 'date ID',
		'check_enabled' => true,
	);
	$args     = wp_parse_args( $args, $defaults );

	if ( $args['check_enabled'] && ! wp_revisions_enabled( $post ) ) {
		return array();
	}

	$args = array_merge(
		$args,
		array(
			'post_parent' => $post->ID,
			'post_type'   => 'revision',
			'post_status' => 'inherit',
		)
	);

	$revisions = get_children( $args );

	if ( ! $revisions ) {
		return array();
	}

	return $revisions;
}
5 комментариев
    Войти