Вопрос или проблема
У кого-нибудь есть решение этой проблемы?
Я не могу получить доступ к странице администратора или большей части других страниц, кроме главной.
Системная ошибка: Необработанная ошибка: Класс 'WP_Widget' не найден в /home1/thehub/public_html/theseen.org/wp-includes/widgets/class-wp-widget-links.php:17 Стек вызовов: #0 /home1/thehub/public_html/theseen.org/wp-includes/default-widgets.php(14): require_once() #1 /home1/thehub/public_html/theseen.org/wp-includes/functions.php(3782): require_once('/home1/thehub/p...') #2 /home1/thehub/public_html/theseen.org/wp-includes/class-wp-hook.php(286): wp_maybe_load_widgets('') #3 /home1/thehub/public_html/theseen.org/wp-includes/class-wp-hook.php(310): WP_Hook->apply_filters('', Array) #4 /home1/thehub/public_html/theseen.org/wp-includes/plugin.php(453): WP_Hook->do_action(Array) #5 /home1/thehub/public_html/theseen.org/wp-settings.php(350): do_action('plugins_loaded') #6 /home1/thehub/public_html/theseen.org/wp-config.php(86): require_once('/home1/thehub/p...') #7 /home1/thehub/public_html/theseen.org/wp-load.php(37): require_once('/home1/thehub/p...') #8 /home1/thehub/public_html/theseen.org/wp-admin/admin.php(31): require_once('/home1/ в /home1/thehub/public_html/theseen.org/wp-includes/widgets/class-wp-widget-links.php строка 17
Есть большая вероятность, что ошибка Класс "WP_Widget" не найден
вызвана сканированием ботами, courtesy of script kiddies.
Как предложено в ответе на вопрос на WordPress, скрипт сканирования завершит работу, когда следующий код будет вставлен в верхнюю часть blocks/index.php
:
<?php
if (!defined('ABSPATH') || !defined('WPINC')) {
exit;
}
Ответ или решение
Ошибка "Fatal error: Uncaught Error: Class ‘WP_Widget’ not found" является одним из распространенных фатальных ошибок, которые могут возникать в среде WordPress. Эта проблема может привести к недоступности административной панели, а также к затруднениям в навигации по другим страницам сайта, оставляя только главную страницу доступной для пользователей. Давайте рассмотрим причины возникновения этой ошибки и возможные способы ее устранения.
1. Причины возникновения ошибки
Ошибки, связанные с классом WP_Widget
, в основном происходят из-за:
- Поврежденных файлов ядра WordPress: Неисправности могут происходить из-за неполной установки, повреждений из-за обновления или проблем с файловой системой.
- Конфликтов с плагинами или темами: Некоторые плагины или темы могут вызывать конфликты с ядром WordPress, что может привести к необработанным ошибкам.
- PHP-ошибок: Некоторые скрипты могут неправильно обработать вызов класса, что может вызвать эту ошибку.
- Неуместных приглашений к выполнению кода: Как отмечено в вашем вопросе, боты могут совершать сканирование, что может привести к неожиданным вызовам функций.
2. Диагностика ошибки
Чтобы подтвердить источник проблемы, выполните следующие шаги:
- Проверка файлов: Проверьте целостность файлов ядра WordPress. Можно загрузить последнюю версию WordPress и заменить только директории
wp-admin
иwp-includes
. - Отключение плагинов и тем:
- Переименуйте папку с плагинами через FTP или файловый менеджер, чтобы деактивировать их все сразу. Если сайту это поможет — возвращайтесь к исходному состоянию, включая плагины по одному для диагностики.
- Поменяйте текущую тему на стандартную (например, Twenty Twenty-One) для исключения конфликта с вашей темой.
3. Исправление кода
Если ошибка связана с конфликтом, попробуйте следовать рекомендациям, упомянутым вами в вопросе. Добавление следующего кода в начале файла blocks/index.php
может помочь избежать выполнения кода, вызывающего ошибку:
<?php
if (!defined('ABSPATH') || !defined('WPINC')) {
exit;
}
Это условие проверяет, был ли данный файл вызван из среды WordPress, тем самым защищая его от нежелательных вызовов.
4. Обновление WordPress и PHP
Убедитесь, что ваш WordPress и PHP обновлены до последних стабильных версий. Иногда новые версии содержат исправления, которые могут решить проблемы с совместимостью.
5. Обратиться к хостингу
Если вышеуказанные шаги не помогают, возможно, проблема связана с конфигурацией сервера. Свяжитесь с вашим хостинг-провайдером для диагностики и решения проблемы.
Заключение
Ошибка "Class ‘WP_Widget’ not found" может быть показателем более серьезных проблем в вашей установке WordPress. Однако, следуя описанным шагам, можно эффективно диагностировать и устранить причину возникновения этой ошибки. Не забывайте делать резервные копии ваших файлов и базы данных перед внесением изменений, чтобы избежать потери данных.