Со временем в базе данных Вордпресс накапливается много лишней информации. Её объём иногда достигает таких размеров, что сайт начинает спотыкаться и может даже упасть. Сегодня я покажу несколько приёмов по очистке и оптимизации БД Вордпресс.

База данных Вордпресс напоминает шкаф, в котором хранятся все материалы сайта: посты, страницы, их ревизии, комментарии, в том числе и помеченные как спам, а также все настройки тем и плагинов. Поэтому, если сайт используется продолжительное время, скорее всего в его базе данных имеются данные, которые можно удалить.
Хранение бесполезных данных приводит к раздуванию базы данных. Например, зачем хранить настройки темы, которая была удалена много лет назад? Очистка базы данных не только освобождает пространство, но и способствует увеличению скорости работы сайта.
Для Вордпресс существует несколько различных способов оптимизации БД, я покажу несколько полезных запросов MySQL, которые можно выполнить в phpMyAdmin, например. А также расскажу про пару полезных плагинов, которые помогут упростить задачу.
Внимание: Перед любым действием с базой данных обязательно создать резервную копию.
Содержание
Оптимизация базы данных Вордпресс с помощью phpMyAdmin
Существует несколько способов выполнения SQL-запросов в БД. Самым простым вариантом является phpMyAdmin. Получить к нему доступ обычно можно в панели управления хостингом в разделе «Базы данных».
Внутри phphMyAdmin сразу переходим в раздел SQL.
Здесь мы и будем выполнять все SQL-запросы.
Сразу обращаю внимание, в примерах ниже используется дефолтный префикс таблиц Вордпресс — «wp_» Поэтому, прежде убедитесь, что префиксы таблиц вашей БД такие же. Если нет — просто меняйте их в запросах на свои.
Удалить старые плагины и данные
Начнем с удаления оставшихся данных от удалённых плагинов. В таблице wp_postmeta также можно обнаружить много других ненужных данных, которые можно почистить этим же запросом.
DELETE FROM wp_postmeta WHERE meta_key = 'META-KEY-NAME';
Вместо META-KEY-NAME нужно указать ключи удаляемых плагинов. Их можно найти в таблицах БД.
Удалить все ревизии
Ревизии в Вордпресс очень полезная функция. Но если авторы активно ей пользуются, в БД сохраняется очень много копий постов, которые хранятся и после его публикации.
Удалить разом все ревизии можно таким запросом:
DELETE a,b,c FROM wp_posts a LEFT JOIN wp_term_relationships b ON ( a.ID = b.object_id) LEFT JOIN wp_postmeta c ON ( a.ID = c.post_id ) LEFT JOIN wp_term_taxonomy d ON ( b.term_taxonomy_id = d.term_taxonomy_id) WHERE a.post_type = 'revision' AND d.taxonomy != 'link_category';
Удалить все комментарии со спамом
Иногда комментариев со спамом становится столько, что вручную их удалить уже не удаётся. С помощью одного SQL-запроса можно удалить сразу все комментарии помеченные как «Спам».
DELETE FROM wp_comments WHERE comment_approved = 'spam';
Удалить все неподтвержденные комментарии
Если не хочется удалять вручную все неподтвержденные комментарии, их можно как и спам удалить одним запросом.
DELETE from wp_comments WHERE comment_approved = '0';
Удалить все неиспользуемые теги
Удалить все теги, которые не связаны ни с одним постом можно следующим запросом:
DELETE FROM wp_terms WHERE term_id IN (SELECT term_id FROM wp_term_taxonomy WHERE count = 0 ); DELETE FROM wp_term_taxonomy WHERE term_id not IN (SELECT term_id FROM wp_terms); DELETE FROM wp_term_relationships WHERE term_taxonomy_id not IN (SELECT term_taxonomy_id FROM wp_term_taxonomy);
Удалить старые шорткоды
Часто после удаления плагинов в базе остаются нерабочие шорткоды, которые приходится удалять вручную. Это тоже можно сделать одним SQL-запросом.
UPDATE wp_post SET post_content = replace(post_content, '[YOUR-SHORTCODE]', '' );
Где YOUR-SHORTCODE — удаляемый шорткод.
Удалить пингбеки и трекбеки
Интересно, кто-нибудь вообще ими пользуется?
Перед запуском убедитесь, что вы их отключили в админке.
DELETE FROM wp_comments WHERE comment_type = 'pingback'; DELETE FROM wp_comments WHERE comment_type = 'trackback';
Удалить временные опции
Временные опции в Вордпресс позволяют кешировать часть данных в БД. Но иногда этот кеш тоже может сильно раздуться. Очистить его можно одним запросом.
DELETE FROM wp_options WHERE option_name LIKE ('%\_transient\_%')
Оптимизировать таблицы
Раз уж мы зашли в phpMyAdmin, можно заодно проверить и оптимизировать таблицы. Делается это очень просто.
Выбираем все таблицы и нажимаем «Optimize table»
Оптимизация базы данных Вордпресс с помощью плагинов
Для Вордпресс существует ряд плагинов, с помощью которых можно почистить и оптимизировать базу данных. Самые эффективные из них: WP-Optimize и WP-Sweep.
WP-Optimize
Самый популярный плагин для оптимизации баз данных Вордпресс с более чем 600 тыс. активных установок. Очень прост в использовании, управляется одной кнопкой.
В разделе «Table Information» выводится информация по текущим размерам таблиц базы данных и объем, который плагин сможет освободить. В «Настройках» можно запланировать автоматическую оптимизацию БД. Например, каждую неделю, две недели или месяц.
Плагин WP-Optimize очень прост в использовании. Главное, не забудьте перед его использованием создать резервную копию сайта или хотя бы БД.
СкачатьWP-Sweep
Набирающий обороты плагин от Лестера Чена — известного разработчика Вордпресс.
Плагин имеет интуитивно понятный интерфейс, сразу выводится подробный отчет о том, сколько ненужных данных содержится в базе данных. Можно сразу запустить полную оптимизацию, можно поэтапную.
В отличие от WP-Optimize, WP-Sweet для удаления использует функции Вордпресс, а не прямые запросы к базе данных. Это снижает вероятность пропуска каких-то ненужных данных. Однако, в WP-Sweep пока нет никакой автоматизации процессов.
СкачатьВ заключение
Я надеюсь, эта статья поможет вам оптимизировать и ускорить работу базы данных вашего сайта. Не забывайте перед внесением изменений в базу данных, всегда делать резервную копию сайта.
По материалам wp-rocket.meПодпишитесь на мой телеграм и первыми получайте новые материалы, в том числе которых нет на сайте.
- Иван, при нажатии на кнопку Подписаться (Твиттер) выдает ошибку.
- Александр, спасибо! Забыл изменить адрес на новый
- Спасибо! В 2 раза уменьшился размер БД после оптимизации.