WordPress4.3でWP_Widgetのエラー未対応のまま操作を行うと真っ白になる:メモ

悩み
悩み

WordPress4.3にアップグレードする際に、WP_Widgetのコンストラクターメソッドのエラーが出るのはいろいろなブログで情報がありますが、それとは少しだけエラーの出方が違う状況に遭遇しましたので、一応メモとして。

ただ、出方が違うだけで原因は同じようですし、特段対策が変わる訳でもありません。

単に「そういうことをするとこうなることもある」という程度の話ですので、悪しからずご了承くださいませ。

[2015.9.4追記]—
後述するフォーラムの内容を日本語訳されている方がいたので、「フォーラムの日本語訳」の見出しでそちらへのリンクを追加

起こったこと

まずは、実際にエラーでおこったことを。

  1. デバッグモードtrueのWordPressサイトを4.3にアップグレード
  2. WP_Widgetのエラーが管理画面に挿入される
  3. プラグインを最新に更新(WP Multibyte Patch/Yet Another Related Posts Pluginのみサイトで使用)
  4. テーマを変更する
  5. 画面が真っ白でエラーだけが表示される

エラーの内容は以下の通り。

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

Warning: Cannot modify header information – headers already sent by (output started at /home/hoge/wp-includes/functions.php:3457) in /home/hoge/wp-includes/pluggable.php on line 1207

この状態になると、管理画面にも入れなくなります。

とりあえずの対応策

このままでは困るので、とりあえず管理画面に入れるようにしたいところです。

方法は簡単で、デバッグモードをfalseにするだけ。

エラーが無視されて管理画面にも入れるようになります。

後で確認しましたが、問題のプラグイン(今回はYet Another Related Posts Plugin)を有効化してテーマを変えると再発します。

デバッグモードをtrueして、かつ、テーマをある程度の頻度で変えることなどはまずないと思いますが、今回はやってしまったのでこうしてメモとして残す次第です。

WP_Widgetのコンストラクターメソッドのエラーに関する情報

意外と日本語のサイトには見あたらない印象でしたので、WordPressのフォーラムにあるトラブルシューティングの情報をご紹介しておきます。

READ THIS FIRST – WordPress 4.3 Master List

のっけから「Don’t Panic!」とあるあたりが、状況を物語っている印象です。
このページの下部ある「KNOWN ISSUES」の「WP_Widget error」が該当の部分です。

If you are getting this message on your WordPress installation:

The called constructor method for WP_Widget is deprecated since version 4.3.0! Use
__construct()

Then your theme or plugin need to be updated. As a temporary work around look for define( ‘WP_DEBUG’, true ); in your wp-config.php file and set that to false.

If you look in the wp-config.php file and find that WP_DEBUG is already set to false, then please contact your hosting service, and ask them for the proper way for you to disable the PHP display_errors setting on your website. The display_errors setting is a developer mode setting, and it should never be enabled for a live website.

That only causes the warning to not be displayed, the theme or plugin should be updated.

また、上記以外でも私の状況に近かったようなのが以下のスレッドです。

Latest update messed up my site…

ここのスレッドで示されている「basic temporary steps」はよく見かける印象ですし、やはり重要ですね。

該当トピックの日本語訳

上記の英語のトピックを日本語訳しフォーラムに投稿された方がおられましたので、以下にご紹介します。

[閉] 4.3 アップグレードに伴う既知の問題とその解決方法

なお、上記トピックには書かれているとおり、原文も見た方よいことにかわりありません。

結び

前述のフォーラムのトラブルシューティングでも書かれていましたが、デバッグモードを切るのは単にエラーを見えなくしているだけです。

デバッグモードで出てくるエラーの中には無視していもよエラーもありますので、なんでもかんでも即時対応とならずとも良いとは思いますが、原因となるテーマやプラグインが対応しない限り解決していないことにかわりはありません。
見えないと忘れやすいものなので、留意したいところです。

0人がこの記事を評価

役に立ったよという方は上の「記事を評価する」ボタンをクリックしてもらえると嬉しいです。

連投防止のためにCookie使用。SNSへの投稿など他サービスとの連動は一切ありません。

コメント欄