テーマのユーザー定義関数には必ず重複チェックを入れよう

テーマのユーザー定義関数には必ず重複チェックを入れよう

親切なテーマでは必ず入っている、テーマ独自(ユーザー定義)関数に対する重複チェックコード。

チェックといっても「同じ名前の関数がなかったら..」という意味を成す以下のコードのことを言います。

if ( !function_exists( 'ユーザー定義関数名' ) ){
function ユーザー定義関数名(){
関数の内容
}
}

ちょうどいつものユーザー定義関数を前後で挟んだ形で記述します。

親テーマのfunctions.phpなどへ記述するユーザー定義関数に対してこれを入れておくことで、以下のような効果があります。

  • 親テーマを上書き更新した際、子テーマにたまたま同じ名前のユーザー定義関数がある場合に「重大なエラーが発生しました」とサイトがストップしてしまうトラブルを防ぐことができる
  • 子テーマ側で親テーマのユーザー定義関数を重複チェックコードを外してコピーして加工することで、完全に処理を上書きすることができる(フィルターフックよりも強力)

特に誰かに使ってもらうために配布しているテーマでは、できる限りこの処理を入れておいた方が、使われる方に親切だと思います(【HABONE】テーマではほとんどの関数にこの処理入れてます)。

ただし、この処理は万能ではなく、裏を返せば、子テーマに親テーマと同名のユーザー定義関数があって、まったく処理の違うものが記述されている場合には、子テーマ側のコードが生きて、親テーマ側のコードが死んでしまう(処理されなくなる)可能性がありますから注意が必要ではあります。

とはいえ、たまたま子テーマに親テーマと同名で別の処理をするユーザー定義関数が加わる可能性は、重複してトラブルになる確率よりもよほど低いので、やはり判定関数(重複チェック関数)は入れておいた方がよいと個人的には思います。

著:清水 由規, 著:清水 久美子, 著:鈴木 力哉, 著:西岡 由美, 監修:星野 邦敏, 監修:吉田 裕介
¥2,948 (2022/09/22 08:50時点 | Amazon調べ)
著:Mana
¥2,200 (2022/09/22 08:50時点 | Amazon調べ)
Avatar photo

作者:

WordPress用テーマ「HABONE」の開発、プラグインやテーマの翻訳、WordPressの使い方やカスタマイズ方法などの情報を配信しています。

年齢:50代 趣味/園芸・ペット・卓球