function_existsが使われているthemeは親切だと思う

ワードプレスをCMSとして使う際、既存のテーマを拝借してカスタマイズすることも多いと思います。そんな時に気になることのひとつに、function.phpで「function_exists」が使われているかどうかということがあるかなと思います。そのテーマを直接カスタマイズするのなら良いのですが、子テーマを使ってカスタマイズする場合にこの「function_exists」が有るのと無いのでは気の持ちようがだいぶ変わってきます(私だけかもしれませんが笑)。

そもそも function_exists って何ぞや? という方のためにご説明いたしますと、指定した関数が既に定義済みであるかどうかをチェックする関数になります。


//function_name_foo という関数が定義されているかどうか
if ( ! function_exists( 'function_name_foo' ) ) :

  //定義されていない場合はfunction_name_fooを定義
  function function_name_foo() {
    //処理内容
  }

endif;

子テーマを使ったカスタマイズの場合、子テーマのfunction.php → 親テーマのfunction.phpという順で読み込まれます。親テーマで定義されている関数を子テーマ側から上書きしようと同じ関数を書いたところで、「その関数定義済みなんだけど」っていうエラーになってしまうんです。ところが、親テーマ側で function_exists が使われているなら話は別。エラーにはならず、子テーマ側からオーバーライドできる感じになるんですね。

テーマのカスタマイズの他、プラグインが絡むカスタマイズの場合にも大変便利な function_exists関数です。これを使っておくと安心感が高まると思うので、使ったことのない方は試してみてくださいねsayonara.gif

トラックバックURL