Определяет сколько последних ревизий (изменений) следует хранить в базе данных для конкретной записи (поста).
Это обертка для:
- Константы
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.
Возвращает
int
. Количество ревизий, которые необходимо хранить для указанной записи.
число
- сколько ревизий хранить в БД.-1
- хранить в БД все ревизии.0
- не сохранять ревизии вообще.
Использование
wp_revisions_to_keep( $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 );
Список изменений
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 the number of revisions to save for the given post. * * Overrides the value of WP_POST_REVISIONS. * * @since 3.6.0 * * @param int $num Number of revisions to store. * @param WP_Post $post Post object. */ $num = apply_filters( 'wp_revisions_to_keep', $num, $post ); /** * Filters the number of revisions to save for the given post by its post type. * * Overrides both the value of WP_POST_REVISIONS and the {@see 'wp_revisions_to_keep'} filter. * * The dynamic portion of the 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 Number of revisions to store. * @param WP_Post $post Post object. */ $num = apply_filters( "wp_{$post->post_type}_revisions_to_keep", $num, $post ); return (int) $num; }