Диагностика проблемы с автообновлениями после смены домена
При смене домена сайта WooCommerce плагины часто перестают получать автоматические обновления. Это связано с тем, что лицензия плагина привязана к старому домену, либо механизм проверки лицензии не учитывает изменения URL. В результате в панели администратора WordPress вы видите уведомления об обновлениях, но при попытке обновления появляется ошибка или обновление не происходит.
Первое, что нужно сделать — проверить, как устроена проверка лицензии вашего плагина:
- Привязка лицензии к домену в лицензионном сервере или плагине.
- Механизм проверки домена в запросах к серверу обновлений.
- Сохраняются ли старые домены в базе данных WordPress или в настройках плагина.
Для диагностики также полезно включить режим отладки WordPress и посмотреть логи ошибок при попытке обновления:
define('WP_DEBUG', true);
define('WP_DEBUG_LOG', true);
define('WP_DEBUG_DISPLAY', false);Логи будут сохраняться в wp-content/debug.log, где можно отследить ошибки, связанные с лицензиями или запросами к серверу обновлений.
Пошаговое решение проблемы с автообновлениями после смены домена
1. Проверка и обновление домена в лицензии плагина
Если лицензионный ключ привязан к домену, необходимо обновить информацию о домене в лицензионном сервере или в настройках плагина. Обычно это делается через личный кабинет разработчика плагина или API. Например, если у вас есть API для обновления домена:
$response = wp_remote_post('https://license-server.example.com/api/update-domain', [
'body' => [
'license_key' => 'ВАШ_ЛИЦЕНЗИОННЫЙ_КЛЮЧ',
'old_domain' => 'oldsite.ru',
'new_domain' => 'newsite.ru',
]
]);
if (is_wp_error($response)) {
error_log('Ошибка обновления домена лицензии: ' . $response->get_error_message());
}Если такого API нет, обратитесь к разработчику плагина для получения инструкции.
2. Очистка кеша лицензий и данных об обновлениях
WordPress и плагины могут кешировать данные о лицензиях и обновлениях. Для очистки кеша используйте:
- Удаление transient-опций, связанных с лицензиями и обновлениями.
- Очистку кеша плагинов кеширования (например, WP Rocket, W3 Total Cache).
- Очистку кеша серверного уровня, если используется (например, Redis, Memcached).
Пример удаления transient из базы данных:
global $wpdb;
$wpdb->query("DELETE FROM {$wpdb->options} WHERE option_name LIKE '_transient_%update_license%' OR option_name LIKE '_transient_timeout_%update_license%'");3. Обновление URL сайта в базе данных
Для корректной работы многих плагинов, включая систему автообновлений, важно обновить URL сайта в настройках WordPress:
update_option('siteurl', 'https://newsite.ru');
update_option('home', 'https://newsite.ru');Проверьте, что в базе данных нет старых ссылок на старый домен, особенно в таблицах с настройками плагинов.
4. Проверка и обновление хуков автообновления
Если плагин использует собственный код для проверки обновлений, убедитесь, что в нем учитывается новый домен. Например, в фильтре site_transient_update_plugins:
add_filter('site_transient_update_plugins', function($transient) {
if (empty($transient->response)) {
return $transient;
}
foreach ($transient->response as $plugin_file => $plugin_data) {
// Проверяем домен и обновляем URL запроса
if (strpos($plugin_data->slug, 'ваш-плагин') !== false) {
// Здесь можно переписать URL обновления
}
}
return $transient;
});Проверка результата после внедрения решения
Чтобы убедиться, что автообновления работают корректно, выполните следующие шаги:
- Очистите кеш браузера и кеш плагинов кеширования.
- Перейдите в админпанель WordPress → Консоль → Обновления.
- Проверьте наличие доступных обновлений плагинов.
- Попробуйте обновить плагин вручную, если обновление не происходит автоматически.
- Проверьте логи
wp-content/debug.logна предмет ошибок.
Если обновление прошло успешно, значит проблема решена.
Частые ошибки при настройке автообновлений после смены домена
- Лицензия не отвязана от старого домена — обновления не проходят, так как лицензионный сервер блокирует запросы.
- Кеширование старых данных — transient и кеш плагинов мешают обновлению.
- Неправильный URL в настройках WordPress — плагин не может корректно сформировать запрос к серверу обновлений.
- Ошибки в коде плагина при проверке домена — фильтры и хуки не обрабатывают смену домена.
Практические советы по безопасности и производительности
- Используйте HTTPS на новом домене для защищенного соединения с лицензионным сервером.
- Очистка кеша должна быть регулярной после изменений конфигурации.
- Ограничьте IP-адреса, с которых происходит проверка лицензий, если лицензионный сервер поддерживает такие настройки.
- Для тяжелых сайтов используйте WP-Cron для плановой проверки обновлений, чтобы не нагружать сервер при каждой загрузке страницы.
Сравнение способов решения проблемы
| Метод | Плюсы | Минусы |
|---|---|---|
| Обновление домена в лицензионном сервере | Официальное решение, полная поддержка обновлений | Зависит от разработчика плагина, требует доступа к серверу |
| Очистка кеша и transient | Быстрое и простое | Работает временно, не решает проблему привязки лицензии |
| Правка фильтров автообновления в коде | Гибкость, можно подстроить под особенности сайта | Требует знаний PHP и внутреннего устройства плагина |