私はwp_get_theme()
を使ってアクティブなテーマに関する特定の情報を得ることができます。例えば:
$theme = wp_get_theme();
echo $theme->get( 'TextDomain' ); // twentyfifteen
echo $theme->get( 'ThemeURI' ); // https://wordpress.org/themes/twentyfifteen/
テーマのナメクジを取得する方法はありますか?この場合、それは15になります。テーマのスラッグは、テーマのテキストドメインと必ずしも同じではないことに注意してください。可能であれば、テーマのURLで文字列の置換を行わないようにしたいと思います。
参照: https://codex.wordpress.org/Function_Reference/wp_get_theme
テーマのスラッグに最も近いものは、テーマのディレクトリ名です。これはget_template()
を使って見つけることができます。
echo get_template(); // twentyfifteen
参照: https://codex.wordpress.org/Function_Reference/get_template
スラッグは、options
という名前で格納されているstylesheet
テーブルに取得できます。
echo get_option('stylesheet');
短い答え:get_stylesheet();
技術的にはテーマに 'スラッグ'値はありません。与えられたテーマのディレクトリの名前はあなたが望むものです。
get_template();
…現在のテーマが子テーマの場合、テーマのディレクトリ名、 または親テーマ を返します。
get_option('stylesheet');
子テーマであるかどうかにかかわらず、常にアクティブなテーマのディレクトリ名を返します。
get_stylesheet();
子テーマであるかどうかにかかわらず、常にアクティブなテーマのディレクトリ名を返します。この関数は基本的にget_option('stylesheet');
のラッパーですが、「スタイルシート」フィルタも適用される点が異なります。
function get_stylesheet() {
/**
* Filters the name of current stylesheet.
*
* @since 1.5.0
*
* @param string $stylesheet Name of the current stylesheet.
*/
return apply_filters( 'stylesheet', get_option( 'stylesheet' ) );
}
'stylesheet'フィルタが何をするのかわかりません。カスタマイザと何らかの関係がある可能性があります。
ほとんどの場合、これら3つの関数は同じことをしますが、get_stylesheet();
は最も安全な方法のようです。
wp_get_active_and_valid_themes()
これをwp-settings.phpで見つけました
// Load the functions for the active theme, for both parent and child theme if applicable.
foreach ( wp_get_active_and_valid_themes() as $theme ) {
if ( file_exists( $theme . '/functions.php' ) ) {
include $theme . '/functions.php';
}
}
wp_get_theme
はテーマの WP_Theme オブジェクトを取得します。
$theme = wp_get_theme();
if ( 'Conj' === $theme->name || 'conj' === $theme->template ) {
// Do something...
}