WordPress4.3からウィジェットのコンストラクタ指定方法が変わった

WordPress 4.3から、ウィジェットの仕様が変更されて、PHP4.x系のコンストラクタ指定が非推奨になった。デバッグモードをONにして、WordPress 4.3のサイトにアクセスすると、まれに下記のようなPHPのNoticeエラーが出力される場合がある。

Notice: 呼び出された WP_Widget のコンストラクターメソッドはバージョン 4.3.0 から非推奨になっています! 代わりに
__construct()
を使ってください。 in \var\www\html\wp-includes\functions.php on line 3457

これは、テーマやプラグインで利用されているウィジェットにPHP4.x系のコンストラクタ指定が入っていると表示される。
WordPressのウィジェットは一般的にWP_Widgetクラスを継承して作成するのだが、その際、子クラスから親クラスのコンストラクタを呼び出してオリジナルウィジェットの登録を行う。例えば下記のような感じだ。

──ちなみに、このコンストラクタの書き方だと、WordPress4.3ではNoticeエラーになる。PHP4.x系ではコンストラクタの指定をクラス名で代替できるので、子クラスから親クラスのコンストラクタを指定する時に$this->WP_Widget()と書く。この記述はPHP5.x系でも非推奨ながら利用できるものの、今回WordPress4.3では非推奨になったという事だ。今後のPHPのバージョンアップで廃止されるとウィジェットが機能しなくなるための予防措置だろう。

修正方法は該当するコンストラクタ指定部を下記のように修正すればよい。

$this->WP_Widget()parent::__construct()と修正するだけだ。これでNoticeエラーは出なくなる。

今回は、ちょいネタでした。

Currently comments (2)

  1. この記事のおかげで助かりました! 本業ではなく、あくまで自分のプロモのために、コピペプログラミングをしている私にとって、こういう情報のみが頼みです。しかも、この親切さが。いつもはこういう情報盗みっぱなしだったのですが、お礼をしたくてコメントを残します。

Leave a Reply

Your email address will not be published.