web-dev-qa-db-ja.com

アクティブなテーマのナメクジを取得する方法?

私は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

4
henrywright

テーマのスラッグに最も近いものは、テーマのディレクトリ名です。これはget_template()を使って見つけることができます。

echo get_template(); // twentyfifteen

参照: https://codex.wordpress.org/Function_Reference/get_template

1
henrywright

スラッグは、optionsという名前で格納されているstylesheetテーブルに取得できます。

echo get_option('stylesheet');
7
RRikesh

短い答え: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();は最も安全な方法のようです。

2
drdogbot7
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';
    }
}
0
ihsanberahim

wp_get_themeはテーマの WP_Theme オブジェクトを取得します。

$theme = wp_get_theme();

if ( 'Conj' === $theme->name || 'conj' === $theme->template ) {
    // Do something...
}
0
Mahdi Yazdani