wp_revisions_to_keep() WP 3.6.0

Визначає, скільки останніх ревізій (змін) слід зберігати в базі даних для конкретного запису (поста).

Це обгортка для:

Значення константи передається перший хук, потім у другий і отримане число (результат) повертається. Тобто. функція спирається значення константи WP_POST_REVISIONSі дозволяє змінити результат через хуки.

Константа WP_POST_REVISIONSзадається у файлі wp-config.php .

WP_POST_REVISIONSможе бути одно:

  • true(за замовчуванням) – зберігається нескінченна кількість ревізій.

    Дефолтне значення константи визначено у файлі /wp-includes/default-constants.php .

  • falseабо 0– ревізії будуть відключені.

  • число– Скільки ревізій зберігати. Якщо вказано 5, то зберігатиметься 5 останніх змін запису.

Підтримка ревізій включається під час реєстрації типу запису register_post_type() . Або окремо через функцію:

post_type_supports( 'post_type', 'revisions' )

Якщо тип запису підтримка ревізій вимкнена, то значення константи WP_POST_REVISIONSобнулюється. Однак, навіть якщо ревізії відключені для типу запису, їх все одно можна увімкнути через хуки, наприклад, для окремого запису. Дивіться приклад 2.

Є ще функція wp_revisions_enabled() – перевірять чи включені ревізії для запису.

1 раз – 0.0005041 сек
(повільно) | 50000 разів – 0.04072 сек
(швидкість світла) |
PHP 7.4.25, WP 5.9

Хуки з функції
wp_revisions_to_keep($post);
$post
(
WP_Post ) (обов’язковий)
Об’єкт запису.

Приклади

0

#1 Дізнаємось скільки ревізій дозволено зберігати записи

На чистій установці WordPress дізнаємося, який ліміт ревізій у першого запису.

// Отримаємо запис з ID=1
$post = get_post(1);

// Отримаємо ліміт ревізій для цього запису
$qty = wp_revisions_to_keep($post);

// Виведе -1, тобто можна зберігати нескінченну кількість ревізій
print_r($qty); //> -1
0

#2 Увімкнемо ревізії для окремого запису

Припустимо, у нас є тип запису article, який не підтримує ревізії. Але нам потрібно включити ревізії для одного конкретного запису, наприклад ID 54.

add_filter( 'wp_revisions_to_keep', function( $num, $post ){

	if( 54 === $post->ID ){
		return -1;
	}

	return $num;

}, 10, 2);

список змін

З версії 3.6.0Введено.

Код wp_revisions_to_keep() WP 6.0.2

function wp_revisions_to_keep( $post ) {
	$num = WP_POST_REVISIONS;

	if ( true === $num ) {
		$num = -1;
	} else {
		$num = (int) $num;
	}

	if ( ! post_type_supports( $post->post_type, 'revisions' ) ) {
		$num = 0;
	}

	/**
	 * Filters number revisions to save for given post.
	 *
	 * Overrides the value of WP_POST_REVISIONS.
	 *
	 * @ Since 3.6.0
	 *
	 * @param int $num Кількість номерів для перегляду.
	 * @param WP_Post $post Post об'єкт.
	 */
	$num = apply_filters( 'wp_revisions_to_keep', $num, $post);

	/**
	 * Filters number revisions to save for given post by its post type.
	 *
	 * Зверніться до значення WP_POST_REVISIONS і {@see 'wp_revisions_to_keep'} filter.
	 *
	 * The dynamic portion of hook name, `$post->post_type`, refers to
	 * the post type slug.
	 *
	 * Possible hook names include:
	 *
	 * - `wp_post_revisions_to_keep`
	 * - `wp_page_revisions_to_keep`
	 *
	 * @ Since 5.8.0
	 *
	 * @param int $num Кількість номерів для перегляду.
	 * @param WP_Post $post Post об'єкт.
	 */
	$num = apply_filters( "wp_{$post->post_type}_revisions_to_keep", $num, $post );

	return (int) $num;
}

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

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