Отключение редакций и ревизий в WordPress.

В WordPress отключение редакций и ревизий приносит умиротворение и порядок. Не знаю, как вас, меня иногда бесит огромное количество этих самых ревизий. И, ладно бы, мой сайт прост как грабли и не имеет большого количества функционала и контента. А если это большой сайт и контента много и он добавляется часто? Беда. Редакции — это резервные копии, которые сохраняются в базе данных при каждом обновлении поста или страницы. Если Вам все же нужны ревизии записей и страниц, то можно ограничить количество их сохранения, а можно полностью отключить и удалить.

Итак, решение принято. Мы хотим ограничить количество редакций или отключить их вовсе. Пути три:

  1. Ограничить редакции и ревизии можно при помощи:

WP_POST_REVISIONS

, поместив в config.php:

define('WP_POST_REVISIONS' , 1);

  1. Поработать с хуком, таким образом либо ограничить редакции и ревизии, либо отключить:

wp_revisions_to_keep

Ограничиваем:

function limit_save_revisions_db($count, $post)
{

if ($post->post_type == 'page') {//для стандартных страниц WordPress сохраняем 1 ревизию

return 1;

} elseif ($post->post_type == 'post') {//для стандартных записей WordPress сохраняем 3 ревизии

return 3;

} elseif ($post->post_type == 'reviews') {//для произвольного типа записей "Отзывы" не сохраняем ревизий

return 0;

} else {//для всех остальных сохраняем 3 ревизии

return 3;

}
}
add_action( 'wp_revisions_to_keep', 'limit_save_revisions_db', 10, 2 );

  1. Или отключаем. Третий вариант предусматривает полное отключение редакций и ревизий в WordPress:

function deactivate_revisions( $count )
{
return 0;
}
add_filter( 'wp_revisions_to_keep', 'deactivate_revisions' );

После этого неплохо бы почистить БД WP через PHPMyAdmin (не забываем сделать резервную копию базы данных WP):

DELETE FROM `wp_posts` WHERE post_type = 'revision';

DELETE FROM wp_postmeta WHERE post_id IN (SELECT ID FROM wp_posts WHERE post_type = 'revision' AND post_name LIKE '%revision%');

DELETE FROM wp_term_relationships WHERE object_id IN (SELECT ID FROM wp_posts WHERE post_type = 'revision' AND post_name LIKE '%revision%');



2021-03-09T16:28:04
WordPress