Ревизии в WordPress — это полезная функция, которая позволяет сохранять историю изменений постов и страниц. Однако с течением времени количество ревизий может значительно вырасти, занимая место в базе данных и замедляя работу сайта. В этой статье расскажу, как эффективно удалить старые ревизии постов без использования плагинов, используя SQL-запросы и кастомные функции PHP.
Что такое ревизии в WordPress и почему их нужно удалять
По умолчанию WordPress сохраняет каждое изменение поста как отдельную ревизию. Это удобно для отката к предыдущим версиям, но со временем база данных переполняется, и сайт начинает работать медленнее. Особенно это заметно на сайтах с большим количеством контента и частыми обновлениями.
Удаление старых ревизий помогает:
- Оптимизировать базу данных.
- Уменьшить размер резервных копий.
- Повысить скорость работы сайта.
Важно регулярно контролировать количество ревизий и при необходимости очищать их.
Удаление ревизий через phpMyAdmin с помощью SQL-запроса
Самый простой и быстрый способ — выполнить SQL-запрос напрямую в базе данных через phpMyAdmin или другой инструмент управления MySQL.
Для удаления всех ревизий используйте такой запрос:
DELETE FROM wp_posts WHERE post_type = 'revision';Если таблица имеет другой префикс, замените wp_ на ваш префикс.
Этот запрос удалит все ревизии, но если вы хотите удалить только ревизии старше определённой даты, можно использовать запрос с условием:
DELETE FROM wp_posts WHERE post_type = 'revision' AND post_modified < '2023-01-01 00:00:00';<Здесь ревизии, изменённые раньше 1 января 2023 года, будут удалены.
Перед выполнением запросов обязательно сделайте резервную копию базы данных, чтобы избежать потери данных.
Функция для удаления старых ревизий через PHP в functions.php
Если вы хотите автоматизировать процесс удаления ревизий без плагинов, можно добавить кастомную функцию в файл functions.php вашей темы или в отдельный MU-плагин.
Пример функции для удаления ревизий старше 30 дней:
function wptips_delete_old_revisions() {
global $wpdb;
$date_threshold = date('Y-m-d H:i:s', strtotime('-30 days'));
$table = $wpdb->prefix . 'posts';
$query = $wpdb->prepare(
"DELETE FROM {$table} WHERE post_type = 'revision' AND post_modified < %s",
$date_threshold
);
$deleted = $wpdb->query($query);
return $deleted;
}
// Запускаем функцию один раз через хук init
add_action('init', function() {
if (current_user_can('administrator') && isset($_GET['wptips_delete_revisions'])) {
$count = wptips_delete_old_revisions();
echo '<div style="background:#dff0d8;padding:10px;border:1px solid #3c763d;">Удалено ревизий: ' . intval($count) . '</div>';
}
});После добавления этой функции вы можете удалить ревизии, перейдя по адресу https://ваш-сайт.ru/?wptips_delete_revisions=1 в браузере, будучи администратором.
Такой подход позволяет контролировать процесс очистки без установки дополнительных плагинов.
Ограничение количества ревизий в WordPress через wp-config.php
Чтобы предотвратить накопление большого количества ревизий, можно ограничить их число с помощью константы в wp-config.php.
Добавьте в файл следующий код:
define('WP_POST_REVISIONS', 5);Это ограничит количество ревизий для каждого поста до 5. Старые ревизии будут автоматически удаляться при сохранении новых.
Если хотите полностью отключить ревизии, можно указать значение false:
define('WP_POST_REVISIONS', false);Но я не рекомендую полностью отключать ревизии, так как они полезны для безопасности контента.
Использование плагина Clearfy Pro для управления ревизиями
Если вы предпочитаете использовать готовые решения, обратите внимание на плагин Clearfy Pro. Он позволяет управлять ревизиями, очищать базу данных и оптимизировать WordPress без сложных настроек.
Clearfy Pro имеет интерфейс для массового удаления ревизий, а также автоматическую очистку по расписанию.
Для установки плагина скачайте его с официального сайта, установите и активируйте через админку WordPress.
Резюме и рекомендации по удалению ревизий
Удаление старых ревизий в WordPress — важная задача для поддержания производительности сайта. Вот основные рекомендации:
- Регулярно очищайте базу данных от старых ревизий.
- Используйте SQL-запросы через phpMyAdmin для быстрой очистки.
- Добавляйте кастомные функции в тему для автоматизации процесса.
- Ограничивайте количество ревизий в
wp-config.php. - Используйте плагин Clearfy Pro для удобного управления и оптимизации.
Следуя этим советам, вы сохраните базу данных компактной и сайт быстрым.