PHP 7.0系におけるWordPressのエラー原因はW3 Total Cache!? その解決方法を解説します
昨年12月にリリースされたPHPの新バージョン 7.0 系。
前バージョンとなるPHP 5系と比較して、2倍以上高速化されたということでバージョンを切り替えてみたところ、WordPressサイトである当ブログにエラーが表示されてしまったんですよね。。
ということで、その原因と解決方法を探ってみました。
Photo:WordPress Moleskine notebook By Nikolay Bachiyski
基本的にWordPressそのものはPHP 7.0系に対応されているので、エラーなど出るはずがないのですが、サイトの最下部には以下のメッセージが表示されます。
PHP Warning: Parameter 1 to W3_Plugin_TotalCache::ob_callback() expected to be a reference, value given in /wp-includes/functions.php on line 3464
パッと見ただけだと、WordPressのコアファイルに起因するもののように見えますが、重要なのは前半部分。
W3_Plugin_TotalCache:ob_callback()
とありますよね。これはWordPressユーザーにはお馴染みのキャッシュプラグイン「W3 Total Cache」を指し示しています。
つまりWarningが表示される要因は「W3 Total Cache」にあるということです。
「W3 Total Cache」は2016年1月現在、約5ヶ月ほどにわたって更新がありませんから、PHP 7.0系に対応したバージョンアップがされていないんですね。まぁ、エラーが出るのも致し方なし。
しかし、このままでは常にエラーメッセージがサイトに表示されっぱなしになりますし、どうにかしなければなりません。
ということで、修正方法を探ってみたんですが、さすがはWordPress。
しっかりと修正の手立てがありました。
これによると、「W3 Total Cache」のコアファイルであるTotalCache.php
内に記述された1行を修正するだけで良いとのこと。
ファイルは/wp-content/plugins/w3-total-cache/lib/W3/Plugin/
の中にあります。
このファイルの512行目に記述された
function ob_callback(&$buffer) {
という部分を、
function ob_callback($buffer) {
に変更すればOK。
そのうちプラグインのアップデートで解消されるとは思うんですが、「W3 Total Cache」を使っていて、今すぐにでもPHP 7.0系を利用したいという場合は、自己責任で上記ファイルを修正するといいですね。