Если WordPress начал заметно тормозить, а админка открывается медленнее обычного, одна из частых причин — перегруженная таблица wp_options. В ней хранятся настройки ядра, темы и плагинов, а также автозагружаемые опции, которые WordPress поднимает при каждом запросе. Когда таких записей становится слишком много, сайт тратит лишнее время и память даже на простые страницы.
Очистка wp_options обычно помогает без переустановки сайта и без радикальных мер. Но здесь важно не просто удалить «что-нибудь лишнее», а сначала понять, какие записи реально мешают, а какие нужны для работы сайта.
Что именно раздувает wp_options
В таблице wp_options чаще всего скапливаются три типа мусора:
autoload-опции, которые загружаются на каждом запросе, хотя нужны только в админке или вообще больше не используются;- остатки удалённых плагинов и тем, которые оставили свои настройки в базе;
- временные данные, например устаревшие транзиенты и служебные кэши, если они не очищаются автоматически.
Сам по себе большой размер таблицы ещё не проблема. Критичен именно объём автозагрузки: WordPress собирает все записи с autoload = 'yes' в память до вывода страницы. Если таких строк много или среди них лежат тяжёлые сериализованные массивы, это бьёт и по фронтенду, и по админке.
С чего начать диагностику
Перед очисткой нужно посмотреть, что именно лежит в таблице. Самый практичный путь — через phpMyAdmin, Adminer или любой другой доступ к MySQL. Если есть WP-CLI, им тоже удобно пользоваться, но он не обязателен.
Сначала проверьте общий объём таблицы и количество автозагружаемых записей. Для этого можно выполнить такой запрос:
SELECT COUNT(*) AS total_rows FROM wp_options;
SELECT COUNT(*) AS autoload_rows FROM wp_options WHERE autoload = 'yes';Если префикс таблиц у вас не wp_, подставьте свой. Сам по себе счётчик не скажет, что удалять, но уже покажет, есть ли повод копать глубже.
Полезнее всего посмотреть, какие именно автозагружаемые опции занимают больше всего места:
SELECT option_name, LENGTH(option_value) AS size_bytes
FROM wp_options
WHERE autoload = 'yes'
ORDER BY size_bytes DESC
LIMIT 20;Если вверху списка окажутся записи от давно удалённого плагина, это хороший кандидат на удаление. Если же там настройки активной темы, кэша или важные системные параметры, удалять их нельзя.
Безопасная очистка: что можно удалять, а что нет
Самая частая ошибка — чистить таблицу по названию «на глаз». В wp_options легко удалить нужную настройку и сломать сайт, поэтому сначала делайте резервную копию базы. Это не формальность: после удаления неверной записи восстановление из бэкапа часто быстрее, чем поиск причины поломки.
Обычно можно безопасно удалять:
- опции удалённых плагинов, если вы уверены, что плагин больше не используется;
- устаревшие транзиенты и временные кэши;
- дублирующиеся записи, которые остались после некорректного обновления или миграции.
Нельзя удалять без проверки:
siteurlиhome;active_plugins;- настройки текущей темы и активных плагинов;
- служебные опции WordPress, если вы не понимаете их назначение.
Если вы не уверены в конкретной записи, лучше сначала открыть её содержимое и понять, к какому плагину или теме она относится. Сериализованные массивы часто содержат имя компонента прямо внутри значения.
Удаление мусора от удалённых плагинов
Когда в списке автозагрузки видны явные следы старого плагина, удаляйте только его записи. Например, если плагин уже деинсталлирован, а в базе остались опции с его префиксом, их можно убрать вручную. Делать это лучше после проверки, что плагин действительно не установлен и не будет переустановлен с сохранением старых настроек.
Если плагин удалён, но его записи продолжают грузиться, это прямой кандидат на чистку. Иногда разработчики плагинов оставляют настройки после деактивации, и именно такие хвосты со временем раздувают таблицу.
Очистка транзиентов
Транзиенты — это временные значения, которые WordPress и плагины используют для кэша. Часть из них удаляется автоматически, но при сбоях или после неудачных обновлений в базе могут оставаться устаревшие записи. Их можно чистить, если вы понимаете, что это именно временные данные.
Если нужен быстрый и безопасный способ, проще использовать инструменты, которые умеют удалять только просроченные транзиенты, а не всю таблицу целиком. Это особенно полезно, когда сайт работает давно и в базе накопилось много временных записей.
Как уменьшить автозагрузку в wp_options
Если проблема не только в мусоре, но и в слишком большом объёме автозагрузки, одной очистки может быть мало. Тогда нужно не просто удалить старые записи, а сократить количество опций с autoload = 'yes'.
Здесь есть два рабочих подхода:
- удалить ненужные записи совсем, если они относятся к удалённому плагину или старому функционалу;
- перевести редко используемые опции в режим без автозагрузки, если они всё ещё нужны, но не должны подниматься на каждом запросе.
Второй вариант подходит не всегда. Не все плагины нормально работают, если их настройки перестают автозагружаться. Поэтому менять autoload вручную стоит только тогда, когда вы понимаете, как именно используется эта опция.
Для точечной правки можно обновить значение поля autoload через SQL, но только после проверки конкретной записи. Например:
UPDATE wp_options
SET autoload = 'no'
WHERE option_name = 'example_option';Этот запрос уместен только для понятной вам опции. Не применяйте его массово ко всем строкам подряд: часть настроек WordPress и плагинов должна загружаться автоматически, иначе сайт начнёт вести себя непредсказуемо.
Оптимизация таблицы после очистки
После удаления лишних записей таблицу имеет смысл оптимизировать. Это не ускоряет сайт магически само по себе, но помогает базе пересобрать таблицу и освободить место после массовых удалений.
Если у вас MySQL или MariaDB и хостинг разрешает такие операции, используйте:
OPTIMIZE TABLE wp_options;На больших таблицах операция может занять время и кратковременно нагрузить базу. На shared-хостинге иногда лучше запускать её в низкую нагрузку или через панель хостинга, если там есть встроенная оптимизация таблиц.
Если таблица очень большая, а сайт работает на слабом тарифе, не запускайте оптимизацию в часы пик. Это не опасная операция для данных, но она может временно замедлить сайт во время выполнения.
Как проверить, что стало лучше
После чистки важно не ограничиваться ощущением «вроде быстрее». Проверьте три вещи:
- уменьшилось ли количество строк с
autoload = 'yes'; - сократился ли размер самых тяжёлых автозагружаемых опций;
- стала ли быстрее загрузка админки и обычных страниц.
Для объективной проверки можно повторить запрос на топ тяжёлых автозагружаемых опций и сравнить результат до и после. Если вы используете мониторинг производительности или хотя бы встроенные инструменты браузера, посмотрите время ответа страницы и количество запросов к базе на типичных страницах сайта.
Если после чистки сайт начал выдавать ошибки, значит была удалена или изменена нужная опция. В таком случае не пытайтесь «дочистить ещё сильнее» — сначала восстановите базу из резервной копии и уже потом повторно проверьте список записей.
Когда лучше не чистить вручную
Ручная работа с wp_options оправдана, когда вы видите конкретную причину: старый плагин, тяжёлую автозагрузку, мусор после миграции. Но если вы не понимаете, что именно раздувает таблицу, или сайт уже ведёт себя нестабильно, лучше не удалять записи вслепую.
В таких случаях безопаснее сначала сделать копию базы, затем найти источник проблемы по списку самых тяжёлых опций и только после этого удалять или переносить конкретные записи. Это особенно важно на живом проекте, где одна неверная правка в wp_options может сломать вход в админку, тему или работу активных плагинов.
Если нужен более удобный способ чистить лишние настройки и технический мусор без ручной работы с базой, можно использовать инструменты оптимизации WordPress. Например, Clearfy Pro умеет помогать с удалением дублей и чисткой сайта, но и в этом случае базовую проверку автозагрузки лучше делать вручную, чтобы понимать, что именно вы убираете.