「Fatal error: 'break' not in the 'loop' or 'switch' context」と表示されるとき
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;」とします。
これでエラーは解消するはずです。
以上、簡単に「Fatal error: 'break' not in the 'loop' or 'switch' context」の対処法を書きましたがPHPの修正が不安な場合はWordPressメールサポートにご相談ください。