Как я исправил ошибки с YITH Feeds в логах клиентов

Недавно в лог-файлах нескольких моих клиентов начали появляться странные сообщения:

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');  
}  

Что делает этот код?

  1. Фильтр pre_http_request перехватывает все HTTP-запросы WordPress и проверяет, идёт ли обращение к yithemes.com. Если да — сразу возвращает ошибку, не отправляя реальный запрос.
  2. Хук admin_init удаляет ненужные виджеты YITH из админки, чтобы они не пытались загружать новости.

Результат

После применения этого кода:

  • Логи больше не засоряются ошибками 403.
  • Админка работает чуть быстрее, так как не тратит время на попытки загрузить заблокированные фиды.
  • Виджеты YITH пропали из дашборда, что уменьшило информационный шум.

Если у вас тоже есть такие ошибки — попробуйте это решение. Главное, не забывайте делать бэкапы перед правками!

P.S. Если YITH когда-нибудь разблокирует Россию, можно будет просто удалить этот код. Но пока что, судя по всему, это надолго.

Оставьте комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Пролистать наверх