「Fatal error: 'break' not in the 'loop' or 'switch' context」と表示されるとき

WordPress個別サポート

WordPressをPHP 7に切り替えたら「Fatal error: 'break' not in the 'loop' or 'switch' context」のようなエラーメッセージが表示されることがあります。

ほとんどの場合、テーマやプラグインに古いコードが含まれていることが原因です。

たとえば、「break」という命令についてPHP 5では問題なかった書き方がPHP 7でエラーになる場合があります。

具体的には、次のようにbreakをループやswitch以外で使ってもPHP 5ではセーフでしたがPHP 7ではエラーになります。

if (…略…){
    return true;
    break;
}

上記の例では単純に不要な「break」をコメントにするか削除すれば解決です。

同じように本来はループ内で使われる「continue」についても、このような使い方がエラーになります。

BizVektorの古いバージョンで「'break' not in the 'loop' or 'switch' context」になることも

テーマやプラグインに上記のようなコードが含まれていると「Fatal error: 'break' not in the 'loop' or 'switch' context」になります。たとえば、古いバージョンのBizVektorを使っている場合、上記のエラーが発生する可能性があります。

その場合、最新版のBizVektorにバージョンアップすれば解決です。プラグインについても同じように手動でアップデートすれば大丈夫なはずです。現在は多くの人気テーマやプラグインがPHP 7に対しているのでエラーが解消されます。

ただし、親テーマをカスタマイズしてしまった場合など、諸事情により早急なアップデートが難しい場合は、エラーメッセージを頼りにコードを修正する方法があります。たとえば、次のようなエラーメッセージが表示されたとします。

エラー発生箇所の特定
エラー発生箇所の特定

エラーメッセージが示すファイル(wp-content/themes/biz-vektor/design_skins/003/003_custom.php)を開いて23行目あたりを見てみましょう。原因になっている「break;」が見つかるはずです。

問題の「break;」が存在する
問題の「break;」が存在する
必ずしも行番号ピッタリとは限らないので注意してください。

とりあえずの対応として、この「break;」をコメントにすれば大丈夫です。具体的には「break;」の前に「//」を入力して「//break;」とします。

「break;」をコメントに
「break;」をコメントに

これでエラーは解消するはずです。

エラーが解消する
エラーが解消する

以上、簡単に「Fatal error: 'break' not in the 'loop' or 'switch' context」の対処法を書きましたがPHPの修正が不安な場合はWordPressメールサポートにご相談ください。

WordPressトラブル