親切なテーマでは必ず入っている、テーマ独自(ユーザー定義)関数に対する重複チェックコード。
チェックといっても「同じ名前の関数がなかったら..」という意味を成す以下のコードのことを言います。
if ( !function_exists( 'ユーザー定義関数名' ) ){
function ユーザー定義関数名(){
関数の内容
}
}
ちょうどいつものユーザー定義関数を前後で挟んだ形で記述します。
親テーマのfunctions.phpなどへ記述するユーザー定義関数に対してこれを入れておくことで、以下のような効果があります。
- 親テーマを上書き更新した際、子テーマにたまたま同じ名前のユーザー定義関数がある場合に「重大なエラーが発生しました」とサイトがストップしてしまうトラブルを防ぐことができる
- 子テーマ側で親テーマのユーザー定義関数を重複チェックコードを外してコピーして加工することで、完全に処理を上書きすることができる(フィルターフックよりも強力)
特に誰かに使ってもらうために配布しているテーマでは、できる限りこの処理を入れておいた方が、使われる方に親切だと思います(【HABONE】テーマではほとんどの関数にこの処理入れてます)。
ただし、この処理は万能ではなく、裏を返せば、子テーマに親テーマと同名のユーザー定義関数があって、まったく処理の違うものが記述されている場合には、子テーマ側のコードが生きて、親テーマ側のコードが死んでしまう(処理されなくなる)可能性がありますから注意が必要ではあります。
とはいえ、たまたま子テーマに親テーマと同名で別の処理をするユーザー定義関数が加わる可能性は、重複してトラブルになる確率よりもよほど低いので、やはり判定関数(重複チェック関数)は入れておいた方がよいと個人的には思います。