- 変数に関する仕様がPHP8で大きく変わりました。
結果、こんな感じのエラーが出る可能性があります。
Warning: Undefined variable $hoge in/サーバーパス/ドメイン/public_html/wp/wp-content/themes/P3/header.php on line ‘行数’
これは「header.phpのXXX行目に書いてある変数$hogeが定義されていないよ」というような意味合いです。
該当のソース
if( is_page( 'test' ) ){
$hoge = 'mess';
}
echo $hoge;
「固定ページtestならば、変数$hogeにmessを代入して出力しなさい」というような意味ですが、固定ページtestではない場合どう処理するかが書かれていません。
PHP8以前は勝手に「$hoge = ”」と処理されていましたが、ここが厳密になりエラーを出すようになりました。
修正後のソース
if( is_page( 'test' ) ){
$hoge = 'mess';
}else{
$hoge = '';
}
echo $hoge;
または
$hoge = '';
if( is_page( 'test' ) ){
$hoge = 'mess';
}
echo $hoge;
出たり出なかったり
このエラーメッセージは、サーバーによって出たり出なかったりします。
また、テーマオプション「テンプレート判別タグを表示する」をチェックしていない場合、エラーは出力されません。