WPで関数が用意されていそうですけど、PHPの定数で取得できますよ。
<?php basename(__FILE__); ?>
ただ、header.php 内で実行すると header.php、loop-single.php 内で実行すると loop-single.php が返り値となります。
一応自己解決しました。
functions.phpかプラグインで作る予定だったので現在実行中のファイル名の取得だと不都合がありました。
とりあえずテンプレート階層で利用している関数を参考に現在利用しているテンプレートファイル名を返す関数を作りました。
function get_use_templatefile(){
if ( defined('WP_USE_THEMES') && WP_USE_THEMES ) :
$template = false;
if ( is_404() && $template = get_404_template() ) :
elseif ( is_search() && $template = get_search_template() ) :
elseif ( is_tax() && $template = get_taxonomy_template() ) :
elseif ( is_front_page() && $template = get_front_page_template() ) :
elseif ( is_home() && $template = get_home_template() ) :
elseif ( is_attachment() && $template = get_attachment_template() ) :
remove_filter('the_content', 'prepend_attachment');
elseif ( is_single() && $template = get_single_template() ) :
elseif ( is_page() && $template = get_page_template() ) :
elseif ( is_category() && $template = get_category_template() ) :
elseif ( is_tag() && $template = get_tag_template() ) :
elseif ( is_author() && $template = get_author_template() ) :
elseif ( is_date() && $template = get_date_template() ) :
elseif ( is_archive() && $template = get_archive_template() ) :
elseif ( is_comments_popup() && $template = get_comments_popup_template() ) :
elseif ( is_paged() && $template = get_paged_template() ) :
else :
$template = get_index_template();
endif;
$template = preg_replace("|" . TEMPLATEPATH . "/|",'',$template);
return $template;
endif;
return false;
}
さすがに全部は確認してませんが、多分現在利用しているページのテンプレート名が帰ってくると思います。
不具合などあったらよかったら教えてください。
ファイル名の取得だと不都合がありました。
ちょっと調べたら、グローバル変数 $template にセットされてますね。
print_r($template);
あら、WordPressのグローバル変数を探しても見つからなかったけどあったのですか。
無駄に手間をかけてしまったけど、こっちなら希望通りのあたりが取得できそうです。
返ってくる値は単一の値でしたが、print_rで出力しているところをみると複数になることもあるのでしょうか?
print_rで出力しているところをみると
print_rに特別意味はないです。返り値を調べる時のものをそのままコピペしました…