Недавно в лог-файлах нескольких моих клиентов начали появляться странные сообщения:
PHP Notice: A feed could not be found at `https://yithemes.com/feed/`; the status code is `403` and content-type is `text/html; charset=UTF-8` in...
PHP Notice: A feed could not be found at `https://yithemes.com/latest-updates/feeds/`; the status code is `403` and content-type is `text/html; charset=UTF-8` in...
Сначала я подумал, что это временные проблемы с сервером YITH, но ошибки не исчезали. После проверки выяснилось, что разработчики YITH Themes (итальянская компания) заблокировали доступ для пользователей из России в связи с политической ситуацией.
Почему возникает ошибка 403?
Код 403 Forbidden означает, что сервер понял запрос, но отказывается его выполнять из-за ограничений доступа. В данном случае YITH явно запретил доступ для IP-адресов из РФ, из-за чего WordPress не мог получить RSS-ленту обновлений и новостей.
Как я это исправил
Поскольку YITH-виджеты в админке и автоматические проверки обновлений стали бесполезными (и даже вредными, так как создавали лишнюю нагрузку и засоряли логи), я решил полностью отключить все запросы к yithemes.com
.
Вот код, который я добавил в functions.php
дочерней темы или через кастомный плагин:
<?php
// Блокируем все запросы к yithemes.com
add_filter('pre_http_request', 'wplife_no_yithemes', 10, 3);
function wplife_no_yithemes($preempt, $args, $url) {
if (strpos($url, 'yithemes.com') !== false) {
return new WP_Error('blocked', 'YITH updates are disabled');
}
return $preempt;
}
// Отключаем виджет новостей YITH в админке
add_action('admin_init', 'wplife_remove_yith_dashboard_widget');
function wplife_remove_yith_dashboard_widget() {
remove_meta_box('yith_dashboard_products_news', 'dashboard', 'normal');
remove_meta_box('yith_dashboard_blog_news', 'dashboard', 'normal');
}
Что делает этот код?
- Фильтр
pre_http_request
перехватывает все HTTP-запросы WordPress и проверяет, идёт ли обращение кyithemes.com
. Если да — сразу возвращает ошибку, не отправляя реальный запрос. - Хук
admin_init
удаляет ненужные виджеты YITH из админки, чтобы они не пытались загружать новости.
Результат
После применения этого кода:
- Логи больше не засоряются ошибками 403.
- Админка работает чуть быстрее, так как не тратит время на попытки загрузить заблокированные фиды.
- Виджеты YITH пропали из дашборда, что уменьшило информационный шум.
Если у вас тоже есть такие ошибки — попробуйте это решение. Главное, не забывайте делать бэкапы перед правками!
P.S. Если YITH когда-нибудь разблокирует Россию, можно будет просто удалить этот код. Но пока что, судя по всему, это надолго.