この前「WordPressの「TEMPLATEPATH」と「STYLESHEETPATH」の違いについて」を知ったところで、テーマフォルダ内の特定のファイルを読み込む場合は、私は「locate_template」を使っています。
「locate_template」とは
Codexの「Function Reference/locate template」を参考にいたしますと、以下のように書かれています。
Searches in the STYLESHEETPATH before TEMPLATEPATH so that themes which inherit from a parent theme can just overload one file.
微妙に和訳できないんですけど、たぶん、
ファイルを読み込みます。読み込むファイルは「STYLESHEETPATH」を優先して探しますよ。「TEMPLATEPATH」はそのあとに探します。親テーマから継承しているテーマ(たぶん子テーマのこと)とか使っていたら、子テーマ内にファイルがあるかどうかを最初に探して、ファイルがあったら読み込まれますわ~
って理解しています。
コードの書き方(例)
<?php locate_template( $template_names, $load, $require_once ) ?>
パラメーター
$template_names → 読み込みたいファイル名を指定
$load → trueにすると、ファイルを見つけたら読み込む
$require_once → 「true」だと、「require_once」関数が実行される。「false」だと「require」関数が実行される。※$loadが「true」になっている時のみ処理される
・・・うーむ、これだけだとわからないので、「locate_template」の中身を見ました。「wp-includes/template.php
」ファイル内に以下のように書かれています。
locate_templateの中身
function locate_template($template_names, $load = false, $require_once = true ) { $located = ''; foreach ( (array) $template_names as $template_name ) { if ( !$template_name ) continue; if ( file_exists(STYLESHEETPATH . '/' . $template_name)) { $located = STYLESHEETPATH . '/' . $template_name; break; } else if ( file_exists(TEMPLATEPATH . '/' . $template_name) ) { $located = TEMPLATEPATH . '/' . $template_name; break; } } if ( $load && '' != $located ) load_template( $located, $require_once ); return $located; }
上のコードを眺めると、ようやくなんとなくわかると言いますか、「STYLESHEETPATH」にある「$template_name」があるかどうか探していますね。ない場合には「TEMPLATEPATH」に「$template_name」があるかどうか探して「$located」に格納しています。
まとめ
前回書いた記事「WordPressの「TEMPLATEPATH」と「STYLESHEETPATH」の違いについて」と併せてご参考頂けると、「locate_template」を使っていれば、どういった動きになるのかなんとなく理解できますね。私は理解できました。
このページを共有する