Cómo obtener el slug del tema activo en WordPress
Puedo obtener cierta información sobre el tema activo usando wp_get_theme()
. Por ejemplo:
$theme = wp_get_theme();
echo $theme->get( 'TextDomain' ); // twentyfifteen
echo $theme->get( 'ThemeURI' ); // https://wordpress.org/themes/twentyfifteen/
¿Existe alguna forma de obtener el slug del tema? En este caso sería twentyfifteen. Ten en cuenta que el slug del tema no siempre es igual que el text domain del tema. También me gustaría evitar hacer reemplazos de strings en la URL del tema si es posible.
Ref: https://codex.wordpress.org/Function_Reference/wp_get_theme
Respuesta corta: get_stylesheet();
Técnicamente no existe un valor 'slug' para un tema. El nombre del directorio de un tema dado es lo que necesitas.
get_template();
... devolverá el nombre del directorio de tu tema, o del tema padre en caso de que tu tema actual sea un tema hijo.
get_option('stylesheet');
Siempre devolverá el nombre del directorio de tu tema activo, independientemente de si es un tema hijo o no.
get_stylesheet();
Siempre devolverá el nombre del directorio de tu tema activo, independientemente de si es un tema hijo o no. Esta función es esencialmente un envoltorio para get_option('stylesheet');
, excepto que también aplica un filtro 'stylesheet'.
function get_stylesheet() {
/**
* Filtra el nombre de la hoja de estilos actual.
*
* @since 1.5.0
*
* @param string $stylesheet Nombre de la hoja de estilos actual.
*/
return apply_filters( 'stylesheet', get_option( 'stylesheet' ) );
}
No estoy seguro de qué hace el filtro 'stylesheet'. Parece que podría tener algo que ver con el personalizador.
En la gran mayoría de los casos, estas tres funciones harían lo mismo, pero get_stylesheet();
parece la opción más segura.

wp_get_theme
obtiene un objeto WP_Theme para un tema.
$theme = wp_get_theme();
if ( 'Conj' === $theme->name || 'conj' === $theme->template ) {
// Hacer algo...
}

Descubrí que lo más cercano al slug del tema es el nombre del directorio del tema. Esto se puede encontrar usando get_template()
:
echo get_template(); // twentyfifteen
Ref: https://codex.wordpress.org/Function_Reference/get_template

wp_get_active_and_valid_themes()
Encontré esto en wp-settings.php
// Cargar las funciones del tema activo, tanto para el tema padre como para el tema hijo si es aplicable.
foreach ( wp_get_active_and_valid_themes() as $theme ) {
if ( file_exists( $theme . '/functions.php' ) ) {
include $theme . '/functions.php';
}
}
