PHP7.2にしたらBiz CalendarプラグインでFunction create_function() is deprecatedというエラーが出る問題の修正法
Biz Calenderという国産のカレンダープラグインがあります。
シンプルで使い勝手がよく、お店の定休日を表示するのに便利なプラグインです。私やクライアントさんのサイトに現在も使っているのですが、PHPを7.2に切り替えてから
Deprecated: Function create_function() is deprecated in /Users/makoton/Sites/wp-webmaker/wp-content/plugins/biz-calendar/biz-calendar.php on line 73
というエラーがでて正常に表示できなくなりました。この記事はその原因と対策を解説しています。
どういうエラーか
まず、エラーの内容を簡単に説明すると
「create_functionという廃止された関数を使っているよ」
ということです。
このcreate_functionという関数はセキュリティ面で問題があるとして廃止されました。ですのでこのプラグインは、セキュリティ面で問題があると言えます。
修正方法
Biz Calenderが最後にアップデートされたのは2年前となっており、今後もアップデートされるかどうかわかりません。
他のカレンダープラグインを探してくるのがベストだとは思いますが、それが面倒くさい&エラー箇所も明示されているということで今回はそれを修正することにしました。
ここから先はプラグインのソースコードを編集するので、もし修正ミスがあるとWordPressがまっ白になる可能性があります。バックアップを必ず取ってから作業しましょう。問題が発生しても当サイトでは一切責任を負いませんのでご了承ください。
ダッシュボードのメニューで「プラグイン」→「プラグインエディター」または「Plugin Editor」を選択します。
そうすると、プラグインの編集画面になるので右上にある「編集するプラグインを選択」で”Biz Calendar”を選択して「選択」ボタンをクリックします。
そうするとBiz Calendarの編集画面となり、初期状態では下図のようにbiz-calendar.phpのソースコードが表示されます。
今回はこのbiz-calendar.phpのソースコードを編集していきます。エラーメッセージに出ている73行目までスクロールしてみましょう。
create_function がありましたね。
add_action( 'widgets_init', create_function( '', 'register_widget( "bizcalendarwidget" );' ) );
このソースコードを下記のように書き換えます。コピペでOKです。
add_action( 'widgets_init', function(){ register_widget( "bizcalendarwidget" ); } );
コピペが完了したら「ファイルを更新」をクリックします。警告がでていますが使用中のプラグインでも変更は可能です。心配なら一度無効化してから編集してください。
無事にファイルが更新されると下図のようにメッセージが表示されます。
これでサイトを再読込するとエラーが出ず、カレンダーも正常に表示されます。
まとめ
今回の修正はプラグインを直接編集しています。ですので、もしプラグインがアップデートされた場合はこの修正箇所もリセットされてしまいますが、恐らくアップデートされる場合は今回の問題も修正されていると思います。
便利なプラグインなので是非開発を続けていただきたいですね。
コメント
この記事へのコメントはありません。
コメントをどうぞ