WordPressサイトをPHPバージョン変更後に「Use of undefined constant」エラーが発生した場合の対応方法
このブログではアフィリエイト・アドセンス広告を利用しています
当ブログでは、アドセンス・アフィリエイト広告を掲載しています。
消費者庁が発表しているルールに沿って記事を作成していますが、問題のある表現を見つけた際にはご連絡ください。
1年ぐらい放置してしまっていたサイトを久しぶりに確認してみたら、PHPエラーが発生していました。
エラーの内容は、「Notice: Use of undefined constant…」と表示されていたのです。エラーの回避方法についてご紹介します。
目次(読みたいところへジャンプ!)
Notice: Use of undefined constantエラーとは未定義エラー
上の画像は、PHPのバージョンを5から7へアップグレードした後に、実際にWordPressサイトで表示されていたエラーの内容です。
「Use of undefined constant」エラーとは、「未定義の定数を使用している」場合に発生します。
主な原因としては、関数・変数・定数のスペルミスがある時に、表示されることが多いエラーになります。
該当するテーマ内のindex.phpファイルの36行目を確認してみました。
35
<?php
36 if (function_exists(custom_pagination)) {
37 custom_pagination($wp_query->max_num_pages,"",$paged);
38 }
39 ?>
「Use of undefined constant」エラーを解消するためにチェックしてみたこと
「custom_pagination」という関数は、functions.phpファイル内で作られていて、スペルミスも無し。
次に、PHPマニュアルで、function_exists関数の使い方をチェックしてみました。
http://php.net/manual/ja/function.function-exists.php
すると…function_exists関数の引数はstring型(文字列)となっていましたね…
bool function_exists ( string $function_name )
原因は、function_exists関数の引数であるcustom_paginationをシングルクォーテーションで囲むのを忘れていたことでした…
35 <?php 36 if (function_exists('custom_pagination')) { 37 custom_pagination($wp_query->max_num_pages,"",$paged); 38 } 39 ?>
このPHP関数の文字列型である引数をシングルクォーテーションで囲み忘れ、情けないことに何度も繰り返しているミスだったりします。
WordPressの関数を使用する時にはシングルクォーテーションで囲まなくていいから、ついついその調子で囲み忘れてしまうのです。
以前のPHPでは、引数の型をしっかり設定してなくてもエラーが発生しなかったのですが、PHPのバージョンを上げると、判定がシビアになります。
もし、PHPの未定義エラーが消えなくて悩んでいる方は、「’」を忘れてないかチェックしてみてくださいね。