Cómo obtener el slug del tema activo en WordPress

17 mar 2016, 12:41:56
Vistas: 17.6K
Votos: 6

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

5
Comentarios

Tienes esta información con get_stylesheet()

mmm mmm
17 mar 2016 14:41:55

Después de revisar el codex, parece que esto no es posible sin algo de manipulación de strings. Parece que solía ser posible, pero esa funcionalidad ha quedado obsoleta. Quizás deberías reconsiderar POR QUÉ estás buscando ese slug.

RiaanP RiaanP
17 mar 2016 13:17:01

Lo necesito porque estoy agregando estilos específicos del tema a un plugin que construí, por lo que necesito un identificador único.

henrywright henrywright
17 mar 2016 13:21:05

@henrywright Las mejoras específicas del tema deberían hacerse en un tema hijo. Los plugins están destinados a mejoras específicas del sitio ;-)

Pieter Goosen Pieter Goosen
17 mar 2016 13:47:20

@PieterGoosen Esa es una buena regla general pero hay excepciones :P

henrywright henrywright
17 mar 2016 14:31:20
Todas las respuestas a la pregunta 6
0

Puedes obtener el slug en la tabla options, almacenado bajo el nombre stylesheet.

echo get_option('stylesheet');
17 mar 2016 14:42:40
0

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.

20 nov 2018 00:36:20
0

wp_get_theme obtiene un objeto WP_Theme para un tema.

$theme = wp_get_theme();

if ( 'Conj' === $theme->name || 'conj' === $theme->template ) {
    // Hacer algo...
}
23 abr 2019 15:58:15
1

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

17 mar 2016 14:55:48
Comentarios

Eso capturaría el tema principal si hubiera uno.

fuxia fuxia
17 mar 2016 15:40:14
0
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';
    }
}
30 jul 2019 15:25:27
2
-5

Puedes obtenerlo mediante get_template_directory_uri()

17 mar 2016 14:16:18
Comentarios

¿Podrías explicar cómo get_template_directory_uri() devuelve una ruta, no un nombre de tema?

Pieter Goosen Pieter Goosen
17 mar 2016 14:17:48

El código debe estar entre comillas invertidas o en un bloque de código.

Pieter Goosen Pieter Goosen
17 mar 2016 14:22:03