Как отключить и удалить все редакции в WordPress
Они сохраняются автоматически при каждом изменении записи или страницы, позволяя восстанавливать предыдущие версии. Хотя эта функция полезна, она может значительно увеличивать объем базы данных, особенно на больших сайтах с множеством контента.
Ограничение количества редакций в WordPress
WordPress по умолчанию сохраняет все редакции (ревизии). При желании их количество можно ограничить с помощью фильтра wp_revisions_to_keep или константы WP_POST_REVISIONS.
Пример для ограничения числа редакций в WordPress:
/**
* Plugin Name: My Revisions Config
*/
function my_revisions_to_keep( $revisions ) {
return 5; // Сохраняем только последние 5 ревизий
}
add_filter( 'wp_revisions_to_keep', 'my_revisions_to_keep' );
Можно также настроить разное количество редакций для разных типов записей. Например, сохранить 10 ревизий для страниц и 5 для остальных типов записей:
function my_revisions_to_keep( $revisions, $post ) {
if ( 'page' == $post->post_type )
return 10;
else
return 5;
}
add_filter( 'wp_revisions_to_keep', 'my_revisions_to_keep', 10, 2 );
Также можно использовать директиву WP_POST_REVISIONS в файле wp-config.php, однако там нельзя разграничить настройки для различных типов записей:
define( ‘WP_POST_REVISIONS’, 5 );
Отключение редакций в WordPress
Чтобы полностью отключить создание новых ревизий в WordPress, установите значение 0:
function my_revisions_to_keep( $revisions ) {
return 0;
}
add_filter( 'wp_revisions_to_keep', 'my_revisions_to_keep' );
Можно также использовать файл wp-config.php:
define( ‘WP_POST_REVISIONS’, 0 );
Учтите, что эти изменения не затронут уже существующие редакции – они останутся в базе данных. Также стоит помнить, что автосохранения в WordPress продолжают работать независимо от настроек ревизий.
Удаление всех редакций в WordPress
После отключения создания новых ревизий можно удалить и старые из базы данных. Сначала удалим метаданные и таксономические данные:
Удаление метаданных:
DELETE FROM wp_postmeta WHERE post_id IN (
SELECT ID FROM wp_posts WHERE post_type = ‘revision’
);
Удаление таксономических данных:
DELETE FROM wp_term_relationships WHERE object_id IN (
SELECT ID FROM wp_posts WHERE post_type = ‘revision’
);
Удаление самих редакций:
DELETE FROM wp_posts WHERE post_type = ‘revision’;
Эти запросы удалят все ревизии из базы данных, кроме автосохранений. Перед выполнением рекомендуется создать резервную копию базы данных.
Использование плагина Companion Revision Manager
Это более простой и безопасный способ удаления ревизий в WordPress. Находится, устанавливается и активируется стандартным образом.
После установки перейдите в «Settings» (Настройки).
Чтобы удалить все ревизии записей в WordPress нажмите кнопку прямо над текстом «Deleting revisions cannot be undone».
Чтобы отключить появление новых редакций поставьте галочку перед текстом «Will disable …». Сохраните изменения.
Чтобы указать предельное количество ревизий, вставьте их число в поле над текстом «The maximum number of …». Сохраните изменения.