У меня плагин WP-Discourse работает на WordPress multisite. Два сайта в сети используют его для SSO с двумя разными сайтами Discourse. Остальные сайты сети не используют этот плагин. Всё работало нормально до версии 2.4.6 включительно, но начиная с более новых версий возникает критическая ошибка во всей сети. После неудачного обновления до версии 2.4.7 я ждал следующей версии, чтобы попробовать снова, но проблема осталась той же.
Сеть работает на WordPress 5.4.1 и PHP 5.6.40. Упоминаю это, потому что знаю, что обе версии устарели, но у нас есть причины, по которым мы не можем их обновить.
Что мне нужно сделать для устранения проблемы? Буду благодарен за любые подсказки или советы.
Это так? Обычно это означает наличие хотя бы одного заброшенного кастомного плагина. Тогда ваша настоящая проблема — не WP-Discourse, устаревшая сломанная версия PHP или уязвимый WordPress. Вам следует как можно скорее устранить причину, по которой вы используете слишком старые версии.
Я имею в виду, что я этим не горжусь, но в сети мультисайтов есть темы, которые нельзя обновить, и которые ломаются при попытке обновить WordPress или PHP. К слову, все наши сайты вне мультисайта поддерживаются в актуальном состоянии, только мультисайт — это полный ***.
Мне пришлось быстро восстановить версию плагина 2.4.6, чтобы исправить сайт, поэтому у меня нет подробностей. Я попробую воспроизвести проблему, включив логирование.
[06-Jan-2023 18:11:10 UTC] PHP Fatal error: Call to undefined function register_block_type_from_metadata() in /var/www/vhosts/groups.ismrm.org/httpdocs/wp-content/plugins/wp-discourse/blocks/comments/comments.php on line 46
[06-Jan-2023 18:11:10 UTC] PHP Fatal error: Call to undefined function register_block_type_from_metadata() in /var/www/vhosts/groups.ismrm.org/httpdocs/wp-content/plugins/wp-discourse/blocks/comments/comments.php on line 46
[06-Jan-2023 18:11:12 UTC] PHP Fatal error: Call to undefined function register_block_type_from_metadata() in /var/www/vhosts/groups.ismrm.org/httpdocs/wp-content/plugins/wp-discourse/blocks/comments/comments.php on line 46
[06-Jan-2023 18:11:12 UTC] PHP Fatal error: Call to undefined function register_block_type_from_metadata() in /var/www/vhosts/groups.ismrm.org/httpdocs/wp-content/plugins/wp-discourse/blocks/comments/comments.php on line 46
[06-Jan-2023 18:11:14 UTC] PHP Fatal error: Call to undefined function register_block_type_from_metadata() in /var/www/vhosts/groups.ismrm.org/httpdocs/wp-content/plugins/wp-discourse/blocks/comments/comments.php on line 46
[06-Jan-2023 18:11:32 UTC] PHP Fatal error: Class 'WPDiscourse\DiscourseComment\DiscourseComment' not found in /var/www/vhosts/groups.ismrm.org/httpdocs/wp-content/plugins/wp-discourse/wp-discourse.php on line 70
[06-Jan-2023 18:11:32 UTC] PHP Warning: Missing argument 2 for WPDiscourse\Logs\Logger::create(), called in /var/www/vhosts/groups.ismrm.org/httpdocs/wp-content/plugins/wp-discourse/lib/discourse-base.php on line 62 and defined in /var/www/vhosts/groups.ismrm.org/httpdocs/wp-content/plugins/wp-discourse/lib/logs/logger.php on line 37
[06-Jan-2023 18:11:32 UTC] PHP Warning: Missing argument 2 for WPDiscourse\Logs\Logger::create(), called in /var/www/vhosts/groups.ismrm.org/httpdocs/wp-content/plugins/wp-discourse/lib/discourse-base.php on line 62 and defined in /var/www/vhosts/groups.ismrm.org/httpdocs/wp-content/plugins/wp-discourse/lib/logs/logger.php on line 37
[06-Jan-2023 18:11:32 UTC] PHP Warning: Missing argument 2 for WPDiscourse\Logs\Logger::create(), called in /var/www/vhosts/groups.ismrm.org/httpdocs/wp-content/plugins/wp-discourse/lib/discourse-base.php on line 62 and defined in /var/www/vhosts/groups.ismrm.org/httpdocs/wp-content/plugins/wp-discourse/lib/logs/logger.php on line 37
[06-Jan-2023 18:11:32 UTC] PHP Warning: Missing argument 2 for WPDiscourse\Logs\Logger::create(), called in /var/www/vhosts/groups.ismrm.org/httpdocs/wp-content/plugins/wp-discourse/lib/discourse-base.php on line 62 and defined in /var/www/vhosts/groups.ismrm.org/httpdocs/wp-content/plugins/wp-discourse/lib/logs/logger.php on line 37
[06-Jan-2023 18:11:32 UTC] PHP Warning: Missing argument 2 for WPDiscourse\Logs\Logger::create(), called in /var/www/vhosts/groups.ismrm.org/httpdocs/wp-content/plugins/wp-discourse/lib/discourse-base.php on line 62 and defined in /var/www/vhosts/groups.ismrm.org/httpdocs/wp-content/plugins/wp-discourse/lib/logs/logger.php on line 37
[06-Jan-2023 18:11:32 UTC] PHP Warning: Missing argument 2 for WPDiscourse\Logs\Logger::create(), called in /var/www/vhosts/groups.ismrm.org/httpdocs/wp-content/plugins/wp-discourse/lib/discourse-base.php on line 62 and defined in /var/www/vhosts/groups.ismrm.org/httpdocs/wp-content/plugins/wp-discourse/lib/logs/logger.php on line 37
[06-Jan-2023 18:11:32 UTC] PHP Warning: Missing argument 2 for WPDiscourse\Logs\Logger::create(), called in /var/www/vhosts/groups.ismrm.org/httpdocs/wp-content/plugins/wp-discourse/lib/discourse-base.php on line 62 and defined in /var/www/vhosts/groups.ismrm.org/httpdocs/wp-content/plugins/wp-discourse/lib/logs/logger.php on line 37
[06-Jan-2023 18:11:32 UTC] PHP Warning: Missing argument 2 for WPDiscourse\Logs\Logger::create(), called in /var/www/vhosts/groups.ismrm.org/httpdocs/wp-content/plugins/wp-discourse/lib/discourse-base.php on line 62 and defined in /var/www/vhosts/groups.ismrm.org/httpdocs/wp-content/plugins/wp-discourse/lib/logs/logger.php on line 37
[06-Jan-2023 18:11:33 UTC] PHP Warning: Missing argument 2 for WPDiscourse\Logs\Logger::create(), called in /var/www/vhosts/groups.ismrm.org/httpdocs/wp-content/plugins/wp-discourse/lib/discourse-base.php on line 62 and defined in /var/www/vhosts/groups.ismrm.org/httpdocs/wp-content/plugins/wp-discourse/lib/logs/logger.php on line 37
[06-Jan-2023 18:11:33 UTC] PHP Warning: Missing argument 2 for WPDiscourse\Logs\Logger::create(), called in /var/www/vhosts/groups.ismrm.org/httpdocs/wp-content/plugins/wp-discourse/lib/discourse-base.php on line 62 and defined in /var/www/vhosts/groups.ismrm.org/httpdocs/wp-content/plugins/wp-discourse/lib/logs/logger.php on line 37
[06-Jan-2023 18:11:33 UTC] PHP Warning: Missing argument 2 for WPDiscourse\Logs\Logger::create(), called in /var/www/vhosts/groups.ismrm.org/httpdocs/wp-content/plugins/wp-discourse/lib/discourse-base.php on line 62 and defined in /var/www/vhosts/groups.ismrm.org/httpdocs/wp-content/plugins/wp-discourse/lib/logs/logger.php on line 37
[06-Jan-2023 18:11:33 UTC] PHP Warning: Missing argument 2 for WPDiscourse\Logs\Logger::create(), called in /var/www/vhosts/groups.ismrm.org/httpdocs/wp-content/plugins/wp-discourse/lib/discourse-base.php on line 62 and defined in /var/www/vhosts/groups.ismrm.org/httpdocs/wp-content/plugins/wp-discourse/lib/logs/logger.php on line 37
[06-Jan-2023 18:11:33 UTC] PHP Warning: Missing argument 2 for WPDiscourse\Logs\Logger::create(), called in /var/www/vhosts/groups.ismrm.org/httpdocs/wp-content/plugins/wp-discourse/lib/discourse-base.php on line 62 and defined in /var/www/vhosts/groups.ismrm.org/httpdocs/wp-content/plugins/wp-discourse/lib/logs/logger.php on line 37
[06-Jan-2023 18:11:33 UTC] PHP Warning: Missing argument 2 for WPDiscourse\Logs\Logger::create(), called in /var/www/vhosts/groups.ismrm.org/httpdocs/wp-content/plugins/wp-discourse/lib/discourse-base.php on line 62 and defined in /var/www/vhosts/groups.ismrm.org/httpdocs/wp-content/plugins/wp-discourse/lib/logs/logger.php on line 37
[06-Jan-2023 18:11:33 UTC] PHP Warning: Missing argument 2 for WPDiscourse\Logs\Logger::create(), called in /var/www/vhosts/groups.ismrm.org/httpdocs/wp-content/plugins/wp-discourse/lib/discourse-base.php on line 62 and defined in /var/www/vhosts/groups.ismrm.org/httpdocs/wp-content/plugins/wp-discourse/lib/logs/logger.php on line 37
[06-Jan-2023 18:11:33 UTC] PHP Warning: Missing argument 2 for WPDiscourse\Logs\Logger::create(), called in /var/www/vhosts/groups.ismrm.org/httpdocs/wp-content/plugins/wp-discourse/lib/discourse-base.php on line 62 and defined in /var/www/vhosts/groups.ismrm.org/httpdocs/wp-content/plugins/wp-discourse/lib/logs/logger.php on line 37
Я ничего не знаю, но видел очень похожие ошибки в WordPress, когда версия PHP слишком старая (или слишком новая — это тоже иногда становится проблемой).
Эта функция была добавлена в WordPress 5.5.0, так что всё ясно. WordPress 5.5 уже более 2,5 лет. Вам действительно стоит устранить причины, мешающие обновлению, и обновить WordPress (и PHP).
Либо плагин, либо тема WordPress перестанут работать, и проблема в том, что тема не функционирует на актуальной версии WordPress. Если говорить прямо, это проблема темы, а не плагина WP Discourse.
Если это так и если нет намерения обеспечить обратную совместимость, как раньше, то страница плагина WP-Discourse должна быть обновлена с указанием «Требуется версия WordPress: 5.5 или выше». В настоящее время там указано «4.7 или выше».
Я не знаю, какую тему WP вы используете, но иногда (я сам через это проходил) совместимость темы с PHP 7+ достигается исправлением нескольких строк кода.