wp_revisions_to_keep()
Определяет сколько последних ревизий (изменений) следует хранить в базе данных для конкретной записи (поста).
Это обертка для:
- Константы
WP_POST_REVISIONS
. - Хука wp_revisions_to_keep.
- Хука wp_(post_type)_revisions_to_keep.
Значение константы передается в первый хук, затем во второй и полученное число (результат) возвращается. Т.е. функция опирается на значение константы 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() - проверят включены ли ревизии для записи.
Хуки из функции
Возвращает
int
. Количество ревизий, которые необходимо хранить для указанной записи.
число
- сколько ревизий хранить в БД.-1
- хранить в БД все ревизии.0
- не сохранять ревизии вообще.
Использование
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 Включим ревизии для отдельной записи
Допустим у нас есть тип записи 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 | Введена. |