指定したテーマディレクトリのURLを返す関数
WordPressでテーマディレクトリのURLを取得したい時は「get_template_directory_uri()」を使うと、「http://hoge.com/wp-content/themes/my_theme」のような文字列が返ってきます。
もし、使っているテーマが子テーマの時は「get_template_directory_uri()」だと、親テーマのディレクトリURLが返ってきます。
子テーマ自身のディレクトリのURLが欲しいときは、「get_stylesheet_directory_uri ()」を使うと、「http://hoge.com/wp-content/themes/child_theme」のようにURLを取得することが可能です。
では、親テーマでも子テーマでもない、インストールされている他のテーマのディレクトリURLを取得するときはどうしようか。
「get_theme_root()」で、テーマディレクトリの絶対パスが取得できます。
なので、例えば「another_theme」のパスを使いたい時は、次のように書くことが可能です。
<?php get_theme_root() . '/another_theme' ?>
でも、これだと「another_theme」がWordPressにインストールされているかのチェックが出来ません。
ということで、次のコードをfunctions.phpに記述します。
/** * 指定したテーマのURIを返す * @param String $theme テーマ名 * @return String | false */ function get_the_template_directory_uri($theme) { $theme_path = get_theme_root() . '/' . $theme; if (file_exists($theme_path)) { return get_theme_root_uri() . '/' . $theme; } return false; }
これで次のように書くことで指定のテーマディレクトリURLが取得できます。
<?php get_the_template_directory_uri('another_theme') ?>
インストールされてなければfalseが返ってくるので、次のように使うことが可能です。
<?php if( $theme_pass = get_the_template_directory_uri('another_theme') ){ echo $theme_pass; } ?>
…というか、普通こんなシチュエーションがあるのだろうか。僕はあったんですが。