Функция wp_revisions_to_keep()
определяет, сколько ревизий (изменений) следует хранить в базе данных для конкретной записи. Это полезный инструмент для оптимизации хранения данных, так как позволяет контролировать количество сохраняемых ревизий.
wp_revisions_to_keep( WP_Post $post ): int
WordPress по умолчанию сохраняет неограниченное количество ревизий для каждой записи. Однако это поведение можно изменить с помощью константы WP_POST_REVISIONS
, задаваемой в файле wp-config.php
, или с помощью фильтров. Функция wp_revisions_to_keep()
возвращает количество ревизий, которые нужно хранить для конкретной записи, в зависимости от глобальных и локальных настроек.
Параметры
- $post (WP_Post) (обязательный) — Объект записи (WP_Post), для которой нужно определить количество ревизий.
Возвращаемое значение
- int — Количество ревизий, которые нужно хранить для данной записи. Возвращает:
-1
— если следует сохранять бесконечное количество ревизий.0
— если ревизии отключены.- любое положительное число — лимит сохраняемых ревизий.
Как это работает
Функция использует константу WP_POST_REVISIONS
, а также позволяет разработчикам настраивать количество ревизий для разных типов записей с помощью хуков. Это гибкий инструмент для управления ревизиями в зависимости от требований проекта.
Пример 1: Узнаем лимит ревизий для записи
// Получим объект поста с ID 1
$post = get_post( 1 );
// Получим лимит ревизий для данной записи
$revisions_limit = wp_revisions_to_keep( $post );
// Выведем лимит ревизий
echo 'Лимит ревизий для записи: ' . $revisions_limit;
В этом примере мы получаем объект записи с ID 1 и с помощью функции wp_revisions_to_keep()
узнаём, сколько ревизий может быть сохранено для этой записи.
Пример 2: Включение ревизий для конкретной записи
Допустим, у нас есть кастомный тип записи article
, который по умолчанию не поддерживает ревизии. Но нам нужно включить ревизии для конкретной записи с ID 54.
add_filter( 'wp_revisions_to_keep', function( $num, $post ) {
// Если ID записи равен 54, включаем бесконечные ревизии
if ( 54 === $post->ID ) {
return -1;
}
return $num;
}, 10, 2 );
Этот код через фильтр wp_revisions_to_keep
устанавливает неограниченное количество ревизий для записи с ID 54, даже если для других записей ревизии отключены или ограничены.
Пример 3: Уведомление пользователя о достижении лимита ревизий
Этот пример показывает, как уведомить пользователя, когда количество ревизий для записи достигло предела, определённого через wp_revisions_to_keep()
.
<?php
function notify_revision_limit_reached() {
global $post;
// Получаем все ревизии текущей записи
$revisions = wp_get_post_revisions( $post->ID );
// Если количество ревизий достигло или превысило лимит, показываем уведомление
if ( isset( $post ) && wp_revisions_to_keep( $post ) <= count( $revisions ) ) {
?>
<div class="notice notice-warning">
<p><?php _e( 'Вы достигли максимального количества ревизий для этой записи.', 'myplugin-text-domain' ); ?></p>
</div>
<?php
}
}
add_action( 'admin_notices', 'notify_revision_limit_reached' );
Этот код добавляет уведомление в админ-панели WordPress, если количество ревизий для текущей записи достигло установленного лимита.
Как использовать константу WP_POST_REVISIONS
Константа WP_POST_REVISIONS
управляет количеством сохраняемых ревизий на уровне всего сайта. Она может быть установлена в файле wp-config.php
. Пример:
define( 'WP_POST_REVISIONS', 5 ); // Сохранять только 5 ревизий для каждой записи
Если установить значение WP_POST_REVISIONS
в false
или 0
, ревизии будут полностью отключены:
define( 'WP_POST_REVISIONS', false ); // Отключить ревизии
Хуки
Функция поддерживает два ключевых хука, которые позволяют настраивать количество ревизий для разных типов записей:
wp_revisions_to_keep
wp_(post_type)_revisions_to_keep
(например,wp_page_revisions_to_keep
для страниц)
Эти хуки могут быть использованы для тонкой настройки количества ревизий на уровне отдельных типов записей или даже отдельных записей.
Заключение
Функция wp_revisions_to_keep()
в WordPress — это мощный инструмент для управления ревизиями записей. Она позволяет разработчикам гибко контролировать количество сохраняемых версий, предотвращая накопление ненужных данных и оптимизируя работу с записями. Используя константы и хуки, можно легко настроить поведение ревизий для каждого типа записи в WordPress.