Как получить slug активной темы WordPress?
Я могу получить некоторую информацию об активной теме, используя wp_get_theme()
. Например:
$theme = wp_get_theme();
echo $theme->get( 'TextDomain' ); // twentyfifteen
echo $theme->get( 'ThemeURI' ); // https://wordpress.org/themes/twentyfifteen/
Есть ли способ получить slug темы? В данном случае это будет twentyfifteen. Обратите внимание, что slug темы не всегда совпадает с текстовым доменом темы. Я бы также хотел избежать замены строк в URL темы, если это возможно.
Ссылка: https://codex.wordpress.org/Function_Reference/wp_get_theme
Краткий ответ: get_stylesheet();
Технически у темы нет значения 'slug'. Вам нужно имя директории конкретной темы.
get_template();
…вернет имя директории вашей темы, или родительской темы, если текущая тема является дочерней.
get_option('stylesheet');
Всегда возвращает имя директории активной темы, независимо от того, является ли она дочерней.
get_stylesheet();
Всегда возвращает имя директории активной темы, независимо от того, является ли она дочерней. Эта функция по сути является оберткой для get_option('stylesheet');
, за исключением того, что она также применяет фильтр 'stylesheet'.
function get_stylesheet() {
/**
* Фильтрует имя текущего стиля.
*
* @since 1.5.0
*
* @param string $stylesheet Имя текущего стиля.
*/
return apply_filters( 'stylesheet', get_option( 'stylesheet' ) );
}
Я не уверен, что делает фильтр 'stylesheet'. Похоже, это может быть связано с настройщиком тем.
В подавляющем большинстве случаев эти три функции делают одно и то же, но get_stylesheet();
кажется самым надежным вариантом.

Функция wp_get_theme
получает объект WP_Theme для темы.
$theme = wp_get_theme();
if ( 'Conj' === $theme->name || 'conj' === $theme->template ) {
// Выполнить какие-то действия...
}

Я обнаружил, что самое близкое к слагу темы — это имя директории темы. Его можно получить с помощью функции get_template()
:
echo get_template(); // twentyfifteen
Ссылка: https://codex.wordpress.org/Function_Reference/get_template

wp_get_active_and_valid_themes()
Я нашел это в wp-settings.php
// Загружаем функции активной темы, как родительской, так и дочерней, если применимо.
foreach ( wp_get_active_and_valid_themes() as $theme ) {
if ( file_exists( $theme . '/functions.php' ) ) {
include $theme . '/functions.php';
}
}
