【WordPress】関数を自作する時のおまじない「function_exists()」を忘れてた

最近は生成AIのおかげもあり。

コードも短時間で作れるようになっています。

なので、バーっと作っていた時に「おまじない」を忘れてエラーが起きたことの備忘録です。

関数を自作する時のおまじない

WordPressというよりもPHPですが。

関数を作る時に使用するように推奨されているのが、「function_exists()」」です。

リファレンスの説明を見ると。

function_exists(string $function): bool

組み込みの内部関数およびユーザー定義関数の中から、 function で指定した名前の関数を探します。

‐PHP.net

作成した関数が他のところで定義されているかどうかを判定する関数です。

WordPressの場合、子テーマで運用することが多いと思うので。

親テーマや、あまりないかもしれませんがコアファイルに同じ名前の関数が定義されていると、衝突してエラーを起こしてしまいます。

それを回避するための関数が、finction_exists()です。

関数を自作したときはおまじない的に毎回使っていたんですが。

ばーっと急いで作っていたこともあって、漏れてました。

なので、動作を確認したら「WordPressページに問題があります」という久しぶりの表示w

結構焦りましたし、構文エラーも確認しても原因がないし・・・

でコードを追ったら、関数でエラーが出ていることに気づいた流れです。

使い方

使い方は簡単で、ifの条件として定義し、真のところで関数を定義するだけです。

if (!function_exists('関数名')) {
    function 関数名 {
        // ここに関数の内容を記載
        }

「!function_exists()」としている理由は、関数が定義されていなければ動作して欲しいからです。

function_exists()だけだと、定義されたらtrueが返ってくるので。

同名の関数だと結局衝突してエラーに。

WordPressで使う場合には、この形で覚えておくのが良いと思います。

簡単なことを忘れてしまう

子テーマを読み込む「enqueue_script()」達もそうですが。

ほぼ決められている構文というものがあって、手癖で打てるぐらいで良いとも思います。

といっても、自分は結構めんどくさい関数名を使うことが多いので。

今回のような衝突はもともと起こりにくいんですけどねぇ。

たまたまこういう事が起こると、かなり焦ってしまいますw

まぁ言い訳をすれば、ここ最近はコンテンツ作成やPower Automateを触ったりで。

少しWordPressから離れていたというのもありますかね。

今年は色々といじることになりそうなので。

忘れないように残しておくことにしました。