Если WordPress начал заметно тормозить, а в базе выросла таблица wp_options, первым делом стоит проверить именно автозагружаемые опции. Они подгружаются на каждом запросе к сайту, поэтому лишние и устаревшие записи быстро превращаются в лишнюю нагрузку на базу данных и память PHP.
Здесь не нужен «генеральный» клининг всей базы. Задача проще и точнее: найти тяжелые autoload-записи, понять, какие из них действительно больше не используются, и удалить только безопасные остатки от плагинов, тем и старых настроек.
Что именно раздувает wp_options
В таблице wp_options хранятся настройки ядра, темы и плагинов. Часть этих записей помечена как автозагружаемая через поле autoload со значением yes. Это означает, что WordPress читает их при каждом запросе, даже если конкретной странице они не нужны.
Проблема возникает, когда после удаления плагина или смены темы в таблице остаются старые опции. По отдельности они могут быть небольшими, но в сумме дают большой объем данных. Особенно часто это заметно у плагинов, которые хранят массивы настроек, кэш, временные данные или списки объектов в одной записи.
Важно не путать устаревшие автозагрузки с нужными системными опциями. Удалять все подряд нельзя: можно сломать сайт, потерять настройки темы или отключить рабочий функционал.
Сначала проверьте, действительно ли проблема в autoload
Перед очисткой нужно убедиться, что именно автозагрузка раздута, а не, например, медленный хостинг или тяжелые запросы темы. Самый практичный ориентир — общий объем автозагружаемых опций.
Если у вас есть доступ к phpMyAdmin или другому SQL-интерфейсу, выполните запрос, который покажет суммарный размер автозагружаемых данных:
SELECT SUM(LENGTH(option_value)) AS autoload_size_bytes
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;Этот запрос показывает, какие опции занимают больше всего места. Обычно именно среди них находятся кандидаты на удаление или перевод в режим без автозагрузки.
Какие записи можно удалять, а какие трогать нельзя
Безопаснее всего начинать с записей, которые явно относятся к уже удаленному плагину, старой теме или тестовому функционалу. Если вы видите в названии опции знакомый префикс отключенного расширения, это хороший кандидат на удаление.
Нельзя удалять записи только потому, что они большие. Например, настройки активной темы, кэш текущего плагина или системные параметры WordPress могут занимать много места, но быть необходимыми для работы сайта.
Перед удалением проверьте три вещи:
- плагин или тема, к которым относится опция, действительно удалены или больше не используются;
- опция не выглядит как системная настройка WordPress;
- вы понимаете, что запись хранит именно остаток старого функционала, а не рабочие данные сайта.
Если сомневаетесь, сначала не удаляйте, а временно отключите автозагрузку для такой записи и понаблюдайте за сайтом. Но делать это стоит только если вы понимаете, что именно меняете, потому что некоторые плагины ожидают свои опции в автозагрузке.
Как безопасно очистить устаревшие автозагрузки вручную
Перед любыми изменениями сделайте резервную копию базы данных. Это не формальность: если удалить не ту запись, откат через бэкап будет самым быстрым способом вернуть сайт в рабочее состояние.
Самый аккуратный сценарий — сначала найти конкретные записи, а затем удалить только их. Например, если вы уже определили, что опции относятся к удаленному плагину, можно удалить их по имени:
DELETE FROM wp_options
WHERE option_name IN ('old_plugin_option_1', 'old_plugin_option_2');Если у удаленного плагина общий префикс в названиях опций, можно удалить группу записей по шаблону, но делать это нужно особенно осторожно:
DELETE FROM wp_options
WHERE option_name LIKE 'old_plugin_%';Перед выполнением такого запроса сначала проверьте, какие строки он затронет:
SELECT option_name
FROM wp_options
WHERE option_name LIKE 'old_plugin_%';Если список выглядит ожидаемо, тогда уже удаляйте. После этого очистите объектный кэш, если он используется, и обновите страницу сайта.
Когда лучше не удалять, а перевести запись в non-autoload
Иногда опция нужна, но не должна подгружаться на каждом запросе. В таком случае правильнее не удалять ее, а изменить значение autoload на no. Это полезно для редко используемых настроек, которые не нужны на каждой странице.
Изменять автозагрузку стоит только после проверки, что запись не участвует в критическом пути загрузки сайта. Для этого можно временно переключить ее на no и посмотреть, не появились ли ошибки, не сломалась ли админка и не исчез ли функционал плагина.
UPDATE wp_options
SET autoload = 'no'
WHERE option_name = 'example_option_name';Такой подход часто безопаснее, чем удаление, если опция еще может понадобиться. Но если запись явно осталась от удаленного расширения и больше нигде не используется, удаление чище.
Как проверить результат после очистки
После удаления лишних записей снова проверьте суммарный объем автозагрузки тем же запросом, что и в начале. Если число заметно уменьшилось, вы убрали реальный источник лишней нагрузки.
Затем откройте главную страницу сайта, несколько внутренних страниц и админку. Смотрите не только на скорость, но и на признаки поломки: ошибки в интерфейсе, пропавшие настройки, некорректную работу форм, виджетов или темы.
Если на сайте включен лог ошибок PHP, проверьте его после очистки. Иногда удаленная запись проявляет себя не сразу, а только при открытии конкретного раздела или при запуске фоновой задачи.
Хорошая практика — после ручной чистки еще раз посмотреть топ тяжелых автозагружаемых опций. Если среди них остались записи от давно удаленных расширений, их можно разобрать отдельно, но не стоит превращать это в бесконечную массовую чистку.
Что делать, если таблица снова быстро растет
Если через некоторое время wp_options опять раздувается, значит источник проблемы не в одной старой записи, а в плагине, который постоянно пишет большие автозагружаемые данные. В таком случае удаление следствий поможет только временно.
Обычно нужно найти расширение, которое создает слишком тяжелые опции, и заменить его или изменить его настройки. Особенно подозрительны плагины, которые хранят в опциях кэш, статистику, списки объектов или большие массивы конфигурации. После деактивации такого плагина стоит снова проверить таблицу и удалить оставшиеся хвосты.
Если вы не хотите вручную разбирать SQL-запросы и искать тяжелые записи, для WordPress есть инструменты, которые помогают обслуживать сайт и чистить лишние данные без постоянной работы в базе. Например, Clearfy Pro от WPShop подходит для задач по оптимизации и удалению части лишнего технического мусора, если вам нужен более удобный рабочий инструмент для регулярного обслуживания сайта: https://wpshop.ru/plugins/clearfy.
Но даже с такими инструментами логика остается той же: сначала найти источник разрастания, потом удалить только лишнее, а не чистить базу вслепую.
Коротко о безопасном порядке действий
- Сделайте резервную копию базы данных.
- Проверьте общий объем автозагрузки в
wp_options. - Найдите самые тяжелые записи и определите, к какому плагину или теме они относятся.
- Удаляйте только явно устаревшие опции от уже неиспользуемых расширений.
- Если запись еще нужна, но не должна грузиться всегда, переведите ее в
autoload = noпосле проверки. - После изменений снова проверьте размер автозагрузки и работу сайта.
Если действовать именно так, очистка wp_options действительно помогает снизить нагрузку на базу и убрать лишний тормозящий мусор, а не создает новые проблемы.