WordPresss4.0から5.0.3へのバージョンアップでエラー
とあるお仕事でWordPressのバージョンが古すぎて不安なので、バージョンアップを行ってほしいという依頼を受けました。その際にテーマファイルでウィジェットの定義をしている箇所で非推奨のエラーが発生していたので、その対処法をメモ。エラーの内容は以下の通り。
Notice: [xxxxxxxx(メソッド名)] で呼び出された WP_Widget のコンストラクターメソッドはバージョン 4.3.0 から非推奨になっています ! 代わりに__construct()を使ってください。 in C:\xampp\htdocs\wp-theme\wp-includes\functions.php on line 3986
コンストラクター名の書き換え
まずはコンストラクターそのものの書き換え。コンストラクターをクラス名で指定してあったので、マジックメソッドの__construct()
に書き換えました。
class My_Widget extends WP_Widget { public function My_Widget() { } }
class My_Widget extends WP_Widget { public function __construct() { } }
これでOK。
親クラスのコンストラクター呼び出しのエラー解消
WordPressのウィジェットを拡張する際にWP_Widget
クラスを継承して作成します。その際に親クラスのコンストラクターを呼び出すのですが、その記述もマジックメソッドで書き換えます。
class My_Widget extends WP_Widget { public function My_Widget() { $this->WP_Widget( $base_id, $widget_name, $option ); } }
class My_Widget extends WP_Widget { public function __construct() { parent::__construct( $base_id, $widget_name, $option ); } }
できた!\(^o^)/
これでNoticeエラーが解消されました。
PHP7から非推奨になるものは早めに対処
PHPのマニュアルサイトにも書いていますけど、PHP7から非推奨になるのでWordPress云々ではないから対応しましょう。以下、マニュアルサイトからの抜粋。
引用:PHP: コンストラクタとデストラクタ – Manual警告
古い形式のコンストラクタは PHP 7.0 で 非推奨 となりました。 将来のバージョンで削除されるでしょう。新しいコードでは常に __construct() を使うべきです。
今回のエラーは、「PHP 7.0.x で推奨されなくなる機能」での内容でした。PHPのバージョン、WordPressのバージョンアップ時はきちんとチェックするクセをつけようと思います。
やっているつもりではありますけど (;^_^A