指定したテーマディレクトリの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;
}
?>

 

…というか、普通こんなシチュエーションがあるのだろうか。僕はあったんですが。

この記事を書いた人:

ナカシマ

北区赤羽在住のWEBデザイナー兼エンジニア。インターネット、WordPress、本・漫画、音楽が大好き。妻と猫と暮らすアップル信者。

BLOG: 着ぐるみ追い剥ぎペンギン