Если админка WordPress открывается медленно, а фронтенд начинает «тупить» без видимой причины, часто проблема сидит в таблице wp_options. Обычно дело не в самой таблице как таковой, а в разросшихся автозагружаемых опциях: WordPress подгружает их на каждом запросе, и если таких записей слишком много или они слишком тяжёлые, сайт начинает тормозить даже на нормальном хостинге.
Ниже разберём, как безопасно найти лишние записи, что именно можно удалять, а что трогать нельзя, и как проверить результат после очистки.
Что именно тормозит в wp_options
В таблице wp_options хранятся настройки ядра, темы и плагинов. Сам по себе этот факт не проблема. Проблема появляется, когда в таблице накапливаются:
- автозагружаемые опции с большим объёмом данных;
- остатки удалённых плагинов и тем;
- временные данные, которые должны были исчезнуть, но остались;
- дубли и устаревшие настройки после миграций и обновлений.
Ключевой параметр здесь — autoload. Если у записи стоит autoload = yes, WordPress загружает её почти на каждый запрос сайта. Это удобно для небольших настроек, но вредно, когда таких записей слишком много или они слишком большие.
На практике тормоза чаще всего проявляются так: медленно открывается админка, долго грузится главная, растёт время ответа сервера, а в профилировщике или логах видно, что WordPress тратит время на загрузку опций.
Сначала проверьте, что именно разрослось
Перед удалением нужно понять, что вы чистите. Слепое удаление записей из wp_options — плохая идея: можно сломать тему, плагины, кэш или сам сайт.
Самый полезный первый шаг — посмотреть, какие автозагружаемые опции занимают больше всего места. Если есть доступ к базе через phpMyAdmin или другой SQL-интерфейс, выполните запрос:
SELECT option_name, LENGTH(option_value) AS size_bytes
FROM wp_options
WHERE autoload = 'yes'
ORDER BY size_bytes DESC
LIMIT 50;Если префикс таблиц у вас не wp_, подставьте свой. Запрос покажет самые тяжёлые автозагружаемые записи. Обычно именно среди них находятся главные кандидаты на оптимизацию.
Полезно также посмотреть общий объём автозагрузки:
SELECT SUM(LENGTH(option_value)) AS autoload_size_bytes
FROM wp_options
WHERE autoload = 'yes';Единого «нормального» числа для всех сайтов нет: всё зависит от количества плагинов и сложности проекта. Но если автозагрузка заметно раздута, это уже повод разбираться.
Какие записи можно удалять, а какие нельзя
Самая частая ошибка — удалять всё подряд, что похоже на мусор. В wp_options есть как безопасные кандидаты на удаление, так и критичные настройки.
Обычно можно удалять:
- остатки удалённых плагинов, если вы точно знаете, что они больше не используются;
- временные опции старых плагинов, которые уже неактуальны;
- явный мусор с префиксами удалённых расширений;
- старые transient-данные, если они не очищаются сами.
Нельзя удалять без проверки:
siteurlиhome;active_plugins;- настройки темы, если сайт ещё использует эту тему;
- опции плагинов, которые реально работают на сайте;
- всё, что вы не умеете идентифицировать по названию.
Если название опции непонятно, сначала найдите, какой плагин её создал. У многих расширений имя опции начинается с понятного префикса: по нему проще понять владельца записи.
Безопасный порядок очистки
Перед любыми изменениями сделайте резервную копию базы данных. Это не формальность: если удалить не ту запись, восстановление из бэкапа часто быстрее, чем ручной ремонт сайта.
Дальше действуйте по порядку:
- Сделайте полный бэкап базы данных.
- Посмотрите самые тяжёлые записи с
autoload = yes. - Отберите только те опции, которые относятся к удалённым или точно неиспользуемым плагинам.
- Удаляйте по одной группе, а не всё сразу.
- После каждого шага проверяйте сайт и админку.
Если у вас есть доступ к WP-CLI, можно сначала вывести список автозагружаемых опций и оценить их размер. Но даже в этом случае не спешите удалять всё подряд: WP-CLI удобен для диагностики, а не для бездумной зачистки.
Как удалить лишние записи через SQL
Когда вы точно знаете, какие опции лишние, их можно удалить запросом SQL. Делайте это только после бэкапа и только для тех записей, назначение которых вам понятно.
Например, если нужно удалить одну конкретную опцию:
DELETE FROM wp_options
WHERE option_name = 'имя_опции';Если нужно убрать группу опций по префиксу удалённого плагина, запрос может выглядеть так:
DELETE FROM wp_options
WHERE option_name LIKE 'prefix_%';Здесь важно не ошибиться с шаблоном. Перед удалением лучше сначала выполнить SELECT с тем же условием и убедиться, что в выборку попадают только нужные записи:
SELECT option_name
FROM wp_options
WHERE option_name LIKE 'prefix_%';Если список выглядит подозрительно широким, не удаляйте ничего, пока не уточните назначение опций.
Что делать с автозагрузкой, если запись нужна, но она слишком тяжёлая
Иногда опция нужна, но её не стоит подгружать на каждом запросе. Это типичная ситуация для некоторых плагинов, которые хранят в wp_options большие массивы данных, хотя в автозагрузке они не нужны.
В таком случае не удаляйте запись, а меняйте подход плагина или его настройки. Если плагин позволяет отключить хранение тяжёлых данных в автозагрузке — используйте штатную настройку. Если такой настройки нет, иногда помогает обновление плагина: разработчики исправляют работу с автозагрузкой в новых версиях.
Ручное изменение autoload на no возможно, но делать это стоит только если вы понимаете, как плагин использует эту опцию. Иначе можно получить скрытую поломку: сайт внешне работает, но часть функций перестаёт сохранять настройки или начинает вести себя нестабильно.
Как проверить, что очистка помогла
После удаления мусорных записей не ограничивайтесь визуальной проверкой главной страницы. Нужно убедиться, что сайт действительно стал легче и ничего не сломалось.
Проверьте три вещи:
- открывается ли админка без ошибок;
- сохраняются ли настройки в плагинах и теме;
- уменьшился ли объём автозагрузки в
wp_options.
Повторите SQL-запрос на сумму автозагружаемых данных и сравните результат с тем, что было до очистки:
SELECT SUM(LENGTH(option_value)) AS autoload_size_bytes
FROM wp_options
WHERE autoload = 'yes';Если число заметно снизилось, а сайт и админка работают нормально, значит вы убрали действительно лишнее. Если же после очистки появились ошибки, откатите базу из резервной копии и пересмотрите список удалённых записей.
Как не довести wp_options до нового разрастания
Очистка помогает, но без профилактики таблица снова раздуется. На сайтах с большим количеством плагинов это происходит особенно быстро: каждый новый плагин может добавлять свои настройки, кэш и временные данные.
Чтобы не возвращаться к той же проблеме через пару месяцев, держите под контролем несколько вещей:
- не ставьте лишние плагины «на всякий случай»;
- удаляйте расширения полностью, а не просто деактивируйте их;
- после удаления плагина проверяйте, не остались ли его опции в базе;
- периодически смотрите на самые тяжёлые записи в
wp_options; - обновляйте плагины, которые известны проблемной работой с автозагрузкой.
Если сайт большой и плагинов много, полезно хотя бы раз в несколько месяцев проверять автозагрузку вручную. Это дешевле, чем потом искать причину медленной админки по всему стеку.
Если нужен более удобный способ чистить сайт от мусорных опций и других следов плагинов, можно использовать инструменты оптимизации вроде Clearfy Pro: https://wpshop.ru/plugins/clearfy. Но даже с таким инструментом принцип остаётся тем же: сначала диагностика, потом точечное удаление, а не массовая зачистка вслепую.
Если коротко, безопасная очистка wp_options сводится к трём шагам: найти тяжёлые автозагружаемые записи, удалить только понятный мусор и проверить, что сайт после этого работает так же, но быстрее.