## WP_REVISIONS_TO_KEEP() │ WP 3.6.0
Функция WP_REVISIONS_TO_KEEP() определяет, сколько версий (или изменений) записи следует сохранить.
По умолчанию WordPress хранит неограниченное количество версий изменений.
Константу WP_POST_REVISIONS можно установить в файле wp-config.php, чтобы указать лимит на количество сохраняемых версий.
### Используется в
- wp_save_post_revision()
### Время выполнения
- 1 раз — 0.0005041 сек (медленно)
- 50,000 раз — 0.04072 сек (очень быстро)
- PHP 7.4.25, WP 5.9
### Хуки из функции
- wp_revisions_to_keep
- wp_(post_type)_revisions_to_keep
- wp_post_revisions_to_keep
- wp_page_revisions_to_keep
### Возвращаемое значение
Возвращает целое число (int): количество версий, которые нужно сохранить.
### Применение
```php
wp_revisions_to_keep( $post );
$post(WP_Post) (обязательный) — объект записи.
Примеры
Пример 1: Узнать, сколько версий записи может храниться
На чистой установке WordPress мы можем узнать, каков лимит версий для первой записи.
// Получаем запись с ID=1
$post = get_post( 1 );
// Получаем лимит версий для этой записи
$qty = wp_revisions_to_keep( $post );
// Выведет -1, т.е. неограниченное количество версий может быть сохранено
print_r( $qty ); //> -1
Пример 2: Активировать версии для отдельной записи
Допустим, у нас есть тип записи «статья», который не поддерживает версии. Но мы хотим включить сохранение версий для одной конкретной записи, например, с ID 54.
add_filter( 'wp_revisions_to_keep', function( $num, $post ){
if( 54 === $post->ID ){
return -1; // Возвращает -1 для неограниченных версий
}
return $num; // Возвращает текущее значение
}, 10, 2 );
История изменений
С версии 3.6.0 была внедрена.
Функция кода WP_REVISIONS_TO_KEEP
function wp_revisions_to_keep( $post ) {
$num = WP_POST_REVISIONS;
if ( true === $num ) {
$num = -1; // Если значение true, значит, игнорируем лимит
} else {
$num = (int) $num; // Приводим к целому числу
}
if ( ! post_type_supports( $post->post_type, 'revisions' ) ) {
$num = 0; // Если тип записи не поддерживает версии, сохраняем 0
}
// Фильтруем количество версий для сохранения
$num = apply_filters( 'wp_revisions_to_keep', $num, $post );
// Фильтруем количество версий для сохранения по типу записи
$num = apply_filters( "wp_{$post->post_type}_revisions_to_keep", $num, $post );
return (int) $num; // Возвращаем целое число
}
Связанные функции
wp_get_post_revision()wp_get_post_revisions()wp_is_post_revision()wp_revisions_enabled()wp_save_post_revision()wp_text_diff()