Вопрос или проблема
Я отказался от расширенной поддержки PHP от моего хостинг-провайдера и, к сожалению, не проверил, совместима ли моя сборка WordPress с PHP 8.0 (глупо, знаю… Я спешил, потому что не хотел снова платить, и теперь расплачиваюсь за свою торопливость).
При загрузке моего домена (http://reallybadreverb.com) я получаю следующую ошибку:
Брошено исключение ArgumentCountError
Слишком мало аргументов для функции WP_Widget::__construct(), 0 передано в /homepages/3/d208897801/htdocs/clickandbuilds/ReallyBadReverb/wp-includes/class-wp-widget-factory.php на строке 61, ожидается как минимум 2
Вот что находится на строке 61 указанного файла:
$this->widgets[ $widget ] = new $widget();
Буду признателен за любые советы по изменению кода, чтобы не пришлось заново строить мой сайт. Спасибо.
Вы не можете изменить что-либо в указанном файле, так как он является частью ядра. Технически вы можете, но делать этого действительно не стоит. Даже последняя версия WordPress еще не готова к производству, чтобы быть совместимой с PHP 8 – https://make.wordpress.org/core/2020/11/23/wordpress-and-php-8-0/
Тем не менее, WordPress 5.6+ бета-совместим, поэтому ваш лучший вариант – обновить WordPress. Если это не решит проблему, то вам придется понизить версию PHP на сервере до 7.4 или ждать, пока WordPress выпустит полностью совместимую версию (надеясь, что в ближайшие несколько недель/месяцев выйдет WordPress 6).
Ответ или решение
Уважаемый пользователь,
Судя по вашему описанию проблемы, вы столкнулись с проблемами совместимости между вашей установкой WordPress и версией PHP 8.0. Это распространенная ситуация, особенно при использовании устаревших плагинов или тем, которые не были обновлены для поддержки новых версий PHP. Давайте разберем основные шаги, которые помогут вам решить эту проблему.
1. Обновление WordPress до последней версии
Настоятельно рекомендуется обновить вашу версию WordPress до актуальной. Ваша текущая ошибка может быть вызвана использованием устаревших классов или функций, которые не полностью совместимы с PHP 8.0. На момент написания, версия WordPress 5.6 уже имеет предварительную поддержку PHP 8, однако, для достижения максимальной стабильности, следует обновиться до версии 6.0 или новее. Это минимизирует вероятность возникновения ошибок и уязвимостей.
2. Проверка совместимости тем и плагинов
После обновления WordPress стоит проверить, какие плагины и темы вы используете. Многие плагины могут не быть совместимыми с PHP 8. Рекомендуется:
- Выключить все плагины. Это можно сделать через интерфейс или через файловую систему, переименовав папку с плагинами.
- Проверить, работает ли сайт. Если сайт запустится с отключенными плагинами, то проблема точно кроется в одном из них.
- Включать плагины по одному. После каждого включения проверяйте работоспособность сайта, чтобы определить, какой из плагинов вызывает ошибку.
Также интересует вопрос совместимости вашей темы. Возможно, стоит рассмотреть переход на тему, официально поддерживающую PHP 8.
3. Долгосрочная стратегия и управление версиями PHP
Недостаточно просто обновить WordPress; необходимо также управление версиями PHP.
- Возврат к PHP 7.4. Если сайт не работает даже после обновления, вам, возможно, придется вернуться к предыдущей версии PHP (например, 7.4), пока вы не выполните все обновления. Пообщайтесь с вашим хостинг-провайдером по поводу возможности временного отката.
- Следите за обновлениями WordPress и плагинов. Поскольку WordPress активно продолжает развиваться, важно следить за обновлениями и ванскочными правками, которые исправляют ошибки совместимости с новыми версиями PHP.
4. Прошлые исправления и конфигурация
Если вы не хотите дожидаться обновлений, и готовы более серьезно изменить код, то можно временно модифицировать определенные файлы плагинов или темы. Однако это крайне не рекомендуется, так как может вызвать проблемы при последующих обновлениях. Вместо этого лучше бы создать резервную копию вашего сайта и протестировать все изменения в локальной среде.
Заключение
Ваша основная задача сейчас — это обеспечить совместимость между WordPress, установленными плагинами/темами и версией PHP. Обновление всех компонентов, отключение несовместимых плагинов и возможное временное возврат к предыдущей версии PHP поможет вам решить эти проблемы.
Если вы не уверены в своих силах, рекомендуется обратиться к профессионалам в области веб-разработки. Эксперты смогут провести диагностику и устранение проблем, с которыми вы столкнулись.
Желаю удачи в решении ваших проблем! Если у вас возникнут дополнительные вопросы, не стесняйтесь их задавать.
С уважением,
[Ваше Имя]