【解決】PHPのバージョンを8.0にしたらワードプレスで「Uncaught Error: Call to undefined function create_function() in・・・」のエラーが出る

あるサイトで、PHPのバージョンを8.0にしたらワードプレスで
「Uncaught Error: Call to undefined function create_function() in・・・」
のエラーが出るようになりました。
エラーの原因
エラーの原因自体は、使ってるテーマファイルがfunctions.phpの中で、「create_function」という廃止された関数を使っているからです。
なので、これを修正すればエラーは無くなります。
こちら
[WordPress] BizVektorを使ったサイトのPHPを8.1にアプデしたらcreate_function関数でエラーが出てしまった
にあるように
add_action('widgets_init', create_function('', 'return register_widget("WP_Widget_snsBnrs");'));
これを
add_action('widgets_init', function(){ return register_widget("WP_Widget_snsBnrs"); });
このように無名関数(クロージャ)の形式に修正。
が、今度は、
Fatal error: Uncaught ArgumentCountError: Too few arguments to function WP_Widget::__construct()
というエラーが・・・。
WP_Widgetの引数が足りない、ということです。
そもそもテーマで使ってないウィジットエリアだったので、一旦コメントアウト「//」して対応しました。
使ってないウィジットエリアなので、対応する予定はないですが、必要ならウィジットエリアを定義してる部分を修正ですね。
追記 2025/09/11 08:10:15)WP_Widget を extendsしているクラスのコンストラクタを推奨メソッドに書き換える
他にも同様のエラーのサイトがでてきたので、じっくり取り組んだ所、
WP_Widget を extendsしているクラスのコンストラクタを推奨メソッドに書き換える
で解決しました。
class My_Widget extends WP_Widget {
public function My_Widget() {
parent::WP_Widget( $base_id, $widget_name, $option );
}
}
class My_Widget extends WP_Widget {
public function __construct() {
parent::__construct( $base_id, $widget_name, $option );
}
}
参考)WP_Widget コンストラクターメソッドの非推奨エラーの解消方法
ワードプレスとPHPのバージョンアップは鬼門です・・・。
素人には治せないと思いますので、ホームページ制作会社さんの月額費用で対応してもらうようにしてください。