WordPress
 

サーバのPHPを 8.2 へアップデート 一旦保留

一通りの修正を行い、無事 PHP8.2 で動作するようになった と思ったのですが、なぜか今日になって再びエラーが出て動かなくなってしまいました。
ひとまず、エラーを確認して PHP7.4 へ戻して復旧。さてどうしたものか。

エラーの内容は

 

1Fatal error: Uncaught ArgumentCountError:
2Too few arguments to function WP_Widget::__construct(), 0 passed in ......
3and at least 2 expected in /******/wp-includes/class-wp-widget.php:163 Stack trace:
4#0 /******/wp-includes/class-wp-widget-factory.php(62): WP_Widget->__construct()
5#1 /******/wp-includes/widgets.php(123): WP_Widget_Factory->register('******...')
6
7
8#15 {main} thrown in /******/wp-includes/class-wp-widget.php on line 163</span>
9There has been a critical error on this website.

 

といったもので、古いプラグインで Widgit の登録を行う部分の記述がお作法に反しているらしいのだけれど...

ってこれ最初に https://wordpress.stackexchange.com/ で仕入れた情報をもとに修正したやつでした。
どうやら、昨晩 Wordperssが 6.6.1 に自動更新された際に、対象のファイルが書き戻されてしまったことが原因ようです。

該当の箇所は /******/wp-includes/class-wp-widget-factory.php で

62行目

1$this->widgets[ $widget ] = new $widget();

1$this->widgets[ $widget ] = new $widget($widget, $widget);

のように書き直せばOK
ただ、今のところ PHP8.x はベータサポート扱いらしいので、7.4 のままの方が無難かも。

ここまでで一通りの 8.x 対応も済ませた & 修正すべき箇所のメモも残せたので、8.xに正式対応されるまでは、 更新のたびにファイルを書き戻されて動かなくなってしまっても困るので、7.4へ戻しておこうと思います。


コメントを残す