PHP7.1から7.2にUpdateすると、予約カレンダーのプラグイン「MTS Simple Booking C」で、
Deprecated: Function create_function() is deprecated in /usr/local/shigi/shigizemi/wp/wp-content/plugins/mts-simple-booking-c/mts-simple-booking.php on line 95
という警告(Deprecated:非推奨)が表示されたので、回避策をとりました。
(サイトによると、「脆弱性を修正した新しいバージョンVer.1.4.0をご用意しました。これまで出力されたエラーを解消、PHP5.4以上で動作するように修正しました(2018-02-01)。」とあります。1.4.0が現在の最終バージョンです。脆弱性などの重大な問題が発生しない限り、メンテナンスは期待できません。まぁ、無償版を使っているので贅沢は言えません。しかし、とても便利なプラグインであることは長年使っていて実感しています。制作作者に感謝です。)
基本的には、「create_function」が使えないのだから、ごく普通の「function」にするという方法でいきます。
【前提条件】
- WordPressのサーバのPHPのバージョンは、7.2である。
- MTS Simple Booking Cを利用している。
<手順>
- 警告箇所のcreate_functionをfunctionに変更する。
- 動作確認。
1.警告箇所のcreate_functionをfunctionに変更する。
「mts-simple-booking.php on line 95」を読むと、予約カレンダーをウィジェットに表示する部分に問題があるようです。そこで、下記のように変更しました。
// 予約カレンダーウィジェットモジュールのロード
require_once('mtssb-calendar-widget.php');
MTSSB_Calendar_Widget::set_ajax_hook();
/*create_functionエラーの修正2018-12-28 12:01:30
php7.2にアップデートしたら発生*/
// add_action('widgets_init', create_function('', 'register_widget("' . MTSSB_Calendar_Widget::BASE_ID . '");'));
add_action('widgets_init', function(){register_widget( MTSSB_Calendar_Widget::BASE_ID );});
}
これで、警告は消えました。
2.動作確認。
ウィジェットでの動作確認もパスしました。