WordPress4.3にアップデートしたら出たエラー「WP_Widgetのコンストラクターメソッド…」に対処する

Author :

WordPress
WordPressを4.3にアップデートしたら、ウィジェット関連のエラーが出るようになってしまった。私のところではプラグインを停止することで解決しました。原因と対処法について書きました。

1/2 何のエラーなのか

WordPressを4.3にアップデートしたら、こんなエラーが出ました。
Notice: 呼び出された WP_Widget のコンストラクターメソッドはバージョン 4.3.0 から非推奨になっています! 代わりに
__construct()
を使ってください。 in /home/ ……… /wp-includes/functions.php on line 3457

書かれているとおり、ウィジェット関連のエラーであることが分かります。

ただしエラーが示す「wp-includes/functions.php の 3457行目」はチェック結果を返しているだけで、大元の原因はここではありません。

WordPress4.3からこのエラーが出るようになった理由は、WordPress Codexにも書かれているように「PHP7への対応に備え、PHP4形式のコンストラクタを非推奨にした」からです。The PHP.net wikiには「PHP4形式のコンストラクタはクラスと同名のメソッドにすることができ、PHP5でも互換性を保つため同じスタイルで記述できた。こうした書き方は違和感を感じられるようになりプログラマへのお手本としては使われにくくなってきた」といったことが書かれています。
»PHP: rfc:remove_php4_constructors

2/2 ウィジェットを使うプラグインを停止

エラーメッセージを止めるための対応はふたつ考えられます。

  • エラーメッセージを出さないように設定する
  • エラーのもとを止める・削除する

ひとまず簡単な方法として「エラーのもとを止める」ことにし、ウィジェットをもたらすプラグインを全て停止してみました。すると、エラーメッセージは出なくなりました。

なお、ウィジェットを停止するにはfunctions.phpに

unregister_widget('[ウィジェット名]');

と記述する方法がありますが、これでは不十分なようで(いったん読み込みしたあとに停止されるため)、プラグイン本体ごと停止する必要がありそうです。

最後に、停止したプラグインをひとつずつ再開させていくと原因になったプラグインを特定できます。ちなみに私のところで原因になったのは、ひとつはかなり古くからあってすでに更新もされていないプラグイン、もうひとつは人気記事を表示するウィジェットを含む「Jetpack Post Views」というプラグインでした。