PHP 7.0系におけるWordPressのエラー原因はW3 Total Cache!? その解決方法を解説します

スポンサーリンク

昨年12月にリリースされたPHPの新バージョン 7.0 系。
前バージョンとなるPHP 5系と比較して、2倍以上高速化されたということでバージョンを切り替えてみたところ、WordPressサイトである当ブログにエラーが表示されてしまったんですよね。。
ということで、その原因と解決方法を探ってみました。

Photo:WordPress Moleskine notebook By:Nikolay BachiyskiPhoto: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系を利用したいという場合は、自己責任で上記ファイルを修正するといいですね。

「Hacks」新着記事

カスタムブロックを追加するなら「Block Lab」プラグインを導入すると幸せかもしれない

Avatar for ホシナ カズキ

ホシナ カズキ

「Password Checkup」がChromeユーザーのセキュリティを守ってくれるかもしれない

Avatar for ホシナ カズキ

ホシナ カズキ

Facebookアプリで3D写真投稿機能をONにするには? 試してみたら本当にできた件

Avatar for ホシナ カズキ

ホシナ カズキ

Twitterアプリに搭載されたデータセーブ機能をONにする方法

Avatar for ホシナ カズキ

ホシナ カズキ

大規模・広範囲にわたるクラッキングによるWordPress改ざん事案が発生中

Avatar for ホシナ カズキ

ホシナ カズキ

もっと見る

モバデビモバイルウェブのネタ、ニュースMaciPhoneなどのApple関連、WordPressのことなど、いろいろ書く雑食系ブログメディア。
ためになるかもしれないし、ならないかもしれない。そこそこ更新してますそこそこ。

このブログについてもっと詳しく