С течением времени в базе данных WordPress накапливаются ревизии записей — автоматические сохранения версий ваших постов и страниц. Хотя ревизии помогают восстановить предыдущие варианты контента, их избыточное количество может значительно увеличить размер базы данных и замедлить работу сайта. В этой статье подробно разберём, как удалить старые ревизии записей в WordPress, оптимизировать базу данных и предотвратить чрезмерное накопление ревизий в будущем.
Что такое ревизии в WordPress и зачем их удалять?
Ревизии — это сохранённые версии публикаций, которые автоматически создаются при редактировании записи. Они позволяют откатиться к предыдущему состоянию, если что-то пошло не так. По умолчанию WordPress хранит неограниченное количество ревизий, что приводит к росту таблицы wp_posts и замедлению запросов к базе данных.
Удаление старых ревизий помогает уменьшить размер базы данных, повысить скорость выполнения запросов и улучшить общую производительность сайта. Особенно это актуально для сайтов с большим количеством контента и активными редакторами.
Как просмотреть количество ревизий в базе данных
Для оценки, сколько ревизий накоплено, можно использовать SQL-запрос через phpMyAdmin или другой инструмент управления базой данных:
SELECT post_type, COUNT(*) as revision_count FROM wp_posts WHERE post_type = 'revision' GROUP BY post_type;Этот запрос покажет общее число ревизий. Если их слишком много (например, тысячи), стоит подумать об очистке.
Удаление ревизий с помощью SQL-запроса
Самый быстрый способ удалить все ревизии — выполнить SQL-запрос, удаляющий записи с типом revision:
DELETE FROM wp_posts WHERE post_type = 'revision';После удаления полезно оптимизировать таблицу, чтобы вернуть место:
OPTIMIZE TABLE wp_posts;Однако такой метод удалит абсолютно все ревизии без разбора, что иногда нежелательно. В следующих разделах рассмотрим более точные методы.
Удаление ревизий с помощью плагинов
Если вы не хотите работать напрямую с базой данных, можно воспользоваться специальными плагинами. Вот несколько популярных и проверенных решений:
- WP-Optimize — мощный инструмент для очистки и оптимизации базы данных, включая удаление ревизий, спама и мусорных данных. Подробнее о WP-Optimize на WPSHOP
- Advanced Database Cleaner — позволяет удалять ревизии, оптимизировать таблицы, а также планировать автоматическую очистку.
- Revision Control — помогает ограничить количество ревизий для каждого типа записей, тем самым предотвращая чрезмерный рост базы данных.
Плагины удобны тем, что предоставляют интерфейс для управления данными без риска ошибиться в запросах.
Ограничение количества ревизий в WordPress через functions.php
Чтобы предотвратить накопление большого числа ревизий, можно ограничить их количество программно. Для этого добавьте следующий код в файл functions.php вашей темы или в собственный плагин:
function wpblog_set_revision_limit() {
define('WP_POST_REVISIONS', 3);
}
add_action('init', 'wpblog_set_revision_limit');Этот код ограничит количество ревизий для каждой записи тремя последними версиями. Вы можете изменить число на любое другое значение.
Если хотите полностью отключить ревизии (не рекомендуется), установите значение в false:
define('WP_POST_REVISIONS', false);Удаление ревизий с помощью пользовательской функции и WP-CLI
Для разработчиков удобно использовать WP-CLI — командную строку для управления WordPress. Например, команда для удаления ревизий:
wp post delete $(wp post list --post_type='revision' --format=ids)Также можно создать кастомную функцию PHP для удаления ревизий по определённым условиям. Например, удалять ревизии старше 30 дней:
function wpblog_delete_old_revisions() {
global $wpdb;
$days = 30;
$query = $wpdb->prepare(
"DELETE FROM $wpdb->posts WHERE post_type = 'revision' AND post_modified < NOW() - INTERVAL %d DAY",
$days
);
$wpdb->query($query);
}
add_action('wp_scheduled_delete', 'wpblog_delete_old_revisions');Эту функцию можно запускать по крону, чтобы регулярно очищать старые ревизии.
Советы по работе с ревизиями и базой данных
Для поддержания базы данных в хорошем состоянии рекомендуем:
- Регулярно удалять старые ревизии с помощью плагинов или SQL-запросов.
- Ограничивать количество ревизий, чтобы не нагружать базу.
- Оптимизировать таблицы базы данных через phpMyAdmin или WP-Optimize.
- Использовать WP-CLI для быстрой и безопасной очистки.
- Планировать автоматическую очистку с помощью WP Cron или системного cron.
Применение этих методов поможет сохранить скорость и стабильность вашего WordPress-сайта, особенно если у вас много контента и активная редактура.
Заключение
Удаление старых ревизий — важная задача для оптимизации WordPress. Используйте SQL-запросы, плагины или собственные функции для контроля и очистки. Не забывайте ограничивать количество ревизий, чтобы база данных не разрасталась без необходимости. Если хотите удобное решение для регулярной оптимизации, обратите внимание на плагин WP-Optimize с поддержкой комплексной очистки и оптимизации.