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()

Хуків немає.

Повертає

Массив. Масив об’єктів записів-ревізій або 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.0.2

function wp_get_post_revisions( $post_id = 0, $args = null ) {
	$post = get_post($post_id);
	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;
}

Залишити відповідь

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *