В WordPress параметр autoload в базе данных определяет, будут ли данные опций загружаться автоматически при каждом запросе к сайту. Многие плагины используют autoload для хранения своих настроек, что в некоторых случаях приводит к существенной нагрузке на память и замедлению работы сайта. В этой статье мы подробно рассмотрим, как определить, какие плагины используют autoload, и как отключить autoload для них без потери функциональности.
Что такое autoload в WordPress и почему его стоит контролировать
Опции с autoload = 'yes' загружаются при каждом запросе к сайту, что удобно для часто используемых данных. Но если плагин сохраняет в autoload большие объемы данных или редко используемые настройки, это вызывает избыточное потребление оперативной памяти и замедляет генерацию страниц.
Контроль autoload помогает:
- Уменьшить нагрузку на базу данных.
- Снизить потребление памяти PHP.
- Ускорить загрузку страниц и отклик сайта.
Поэтому важно периодически проверять, какие опции autoload загружаются, и корректировать их.
Как определить, какие опции плагинов загружаются с autoload = 'yes'
Для анализа autoload-опций можно выполнить SQL-запрос к таблице wp_options вашей базы данных. Обычно префикс таблиц может отличаться, подставьте свой при выполнении.
SELECT option_name, LENGTH(option_value) AS size
FROM wp_options
WHERE autoload = 'yes'
ORDER BY size DESC
LIMIT 50;
Этот запрос покажет 50 самых больших опций с автозагрузкой. Обратите внимание на названия, чтобы понять, какие из них относятся к плагинам.
Также можно использовать плагин WP-Optimize или Query Monitor, которые имеют инструменты для анализа autoload.
Как отключить autoload для опций плагинов безопасно
Перед изменением всегда сделайте полную резервную копию базы данных!
Если вы точно уверены, что опция не нужна для постоянной автозагрузки, можно отключить autoload с помощью SQL-запроса:
UPDATE wp_options
SET autoload = 'no'
WHERE option_name = 'название_опции';
Однако лучше автоматизировать этот процесс через код, чтобы не потерять данные и сохранить совместимость с плагинами.
Пример функции wpcheck_disable_autoload_option для отключения autoload в коде
function wpcheck_disable_autoload_option($option_name) {
global $wpdb;
$table = $wpdb->options;
$wpdb->query($wpdb->prepare(
"UPDATE $table SET autoload = 'no' WHERE option_name = %s",
$option_name
));
}
Используйте эту функцию, передавая названия опций, которые хотите исключить из автозагрузки. Например:
wpcheck_disable_autoload_option('plugin_example_settings');
Автоматизация отключения autoload для нескольких опций
Если хотите массово отключить autoload для опций определённого плагина, можно собрать их по префиксу и изменить в цикле:
function wpcheck_disable_autoload_for_plugin($prefix) {
global $wpdb;
$table = $wpdb->options;
$options = $wpdb->get_col($wpdb->prepare(
"SELECT option_name FROM $table WHERE option_name LIKE %s AND autoload = 'yes'",
$prefix . '%'
));
foreach ($options as $option_name) {
wpcheck_disable_autoload_option($option_name);
}
}
Например, чтобы отключить autoload для опций плагина с префиксом wpplugin_:
wpcheck_disable_autoload_for_plugin('wpplugin_');
Риски и рекомендации при отключении autoload
Отключение autoload не должно нарушать работу плагина. Если плагин использует опцию для критичных настроек, которые нужны при каждой загрузке, отключать её не стоит.
Рекомендуется:
- Проверять работу сайта и функционала после изменений.
- Тестировать на тестовой среде, а не на живом сайте.
- Использовать плагины, которые оптимизируют autoload, например, Clearfy Pro, позволяющие управлять автозагрузкой без кода.
Пример проверки и отключения autoload для плагина WPStories
Допустим, плагин WPStories сохраняет много данных в опциях с префиксом wpstories_. Чтобы проверить и оптимизировать:
global $wpdb;
$table = $wpdb->options;
$options = $wpdb->get_results("SELECT option_name, LENGTH(option_value) as size FROM $table WHERE option_name LIKE 'wpstories_%' AND autoload = 'yes' ORDER BY size DESC");
foreach ($options as $option) {
if ($option->size > 1000) { // условие для большого объема
wpcheck_disable_autoload_option($option->option_name);
}
}
Так вы отключите автозагрузку самых тяжёлых опций, уменьшите нагрузку и улучшите производительность.
Выводы и дополнительные инструменты
Контроль autoload — важный шаг для оптимизации WordPress сайтов с большим количеством плагинов. Правильное отключение автозагрузки опций позволяет снизить нагрузку на сервер и ускорить работу сайта.
Для удобства мониторинга и оптимизации можно использовать инструменты:
- Clearfy Pro — оптимизация автозагрузки и много других настроек.
- Query Monitor — диагностика запросов и нагрузки.
- Ручной SQL-анализ базы данных.