WP_REVISIONS_TO_KEEP(): Лимит версий записи в WordPress 3.6.0

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

Leave a Reply

Ваш адрес email не будет опубликован. Обязательные поля помечены *