ミギムキ

[WordPress] BizVektorを使ったサイトのPHPを8.1にアプデしたらcreate_function関数でエラーが出てしまった

BizVektorテーマを使用しているサイトのPHPバージョンを7.4から8.1にアップデートした際、下記のようなエラーが発生しました。

Fatal error: Uncaught Error: Call to undefined function create_function() in xxx\wp-content\themes\biz-vektor\plugins\sns\sns.php:337

PHP8以降から「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"); });

このように無名関数(クロージャ)の形式に修正しました。
該当ファイルは下記の三つで、合計14箇所の修正が必要でした。

xxx\wp-content\themes\biz-vektor\plugins\add_post_type\add_post_type.php
xxx\wp-content\themes\biz-vektor\plugins\widgets\widgets.php
xxx\wp-content\themes\biz-vektor\plugins\sns\sns.php

BizVektorは2018年にアップデートを終了しており、公式サイトではLightningというテーマへの移行が推奨されています。
今後もPHPやWordPressのバージョンアップがある度に問題が起きる可能性も高いため、なるべくテーマの移行をしていきたいところです。
(とは言いつつも、テーマの移行でクライアントに費用負担してもらうのは難しいのが実際のところ。。)

ご質問など受け付けています

記事の中でわかりにくかったところ、もっと知りたかったこと、間違っていることなど、何でもお気軽にご連絡ください。

ご連絡は下記フォームを利用いただくか、ツイッターアカウント@flat8migi宛てでもOKです。