Come ottenere lo slug del tema attivo?

17 mar 2016, 12:41:56
Visualizzazioni: 17.6K
Voti: 6

Posso ottenere alcune informazioni sul tema attivo utilizzando wp_get_theme(). Ad esempio:

$theme = wp_get_theme();
echo $theme->get( 'TextDomain' ); // twentyfifteen  
echo $theme->get( 'ThemeURI' ); // https://wordpress.org/themes/twentyfifteen/

Esiste un modo per ottenere lo slug del tema? In questo caso sarebbe twentyfifteen. Nota che lo slug del tema non sempre corrisponde al text domain del tema. Vorrei anche evitare, se possibile, di dover manipolare l'URL del tema.

Rif: https://codex.wordpress.org/Function_Reference/wp_get_theme

5
Commenti

Hai queste informazioni con get_stylesheet()

mmm mmm
17 mar 2016 14:41:55

Leggendo il codex, sembra che questo non sia possibile senza qualche manipolazione delle stringhe. Sembra che una volta si potesse, ma quelle funzionalità sono state deprecate. Forse sarebbe il caso di riconsiderare PERCHÉ stai cercando quello slug?

RiaanP RiaanP
17 mar 2016 13:17:01

Ne ho bisogno perché sto aggiungendo stili specifici per il tema a un plugin che ho creato, quindi mi serve un identificatore univoco.

henrywright henrywright
17 mar 2016 13:21:05

@henrywright Le funzionalità specifiche del tema dovrebbero essere implementate in un child theme. I plugin sono pensati per funzionalità specifiche del sito ;-)

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

@PieterGoosen È una buona regola generale ma ci sono eccezioni :P

henrywright henrywright
17 mar 2016 14:31:20
Tutte le risposte alla domanda 6
0

Puoi ottenere lo slug nella tabella options, memorizzato con il nome stylesheet.

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

Risposta Breve: get_stylesheet();

Tecnicamente non esiste un valore 'slug' per un tema. Il nome della directory di un determinato tema è ciò che si desidera.

get_template();

…restituirà il nome della directory del tuo tema, o del tema genitore nel caso in cui il tuo tema corrente sia un tema figlio.

get_option('stylesheet');

Restituirà SEMPRE il nome della directory del tuo tema attivo, indipendentemente dal fatto che sia un tema figlio o meno.

get_stylesheet();

Restituirà SEMPRE il nome della directory del tuo tema attivo, indipendentemente dal fatto che sia un tema figlio o meno. Questa funzione è essenzialmente un wrapper per get_option('stylesheet');, con la differenza che applica anche un filtro 'stylesheet'.

function get_stylesheet() {
/**
 * Filtra il nome del foglio di stile corrente.
 *
 * @since 1.5.0
 *
 * @param string $stylesheet Nome del foglio di stile corrente.
 */
return apply_filters( 'stylesheet', get_option( 'stylesheet' ) );
}

Non sono sicuro di cosa faccia il filtro 'stylesheet'. Sembra che possa avere qualcosa a che fare con il personalizzatore.

Nella stragrande maggioranza dei casi, queste tre funzioni farebbero la stessa cosa, ma get_stylesheet(); sembra essere la scelta più sicura.

20 nov 2018 00:36:20
0

wp_get_theme ottiene un oggetto WP_Theme per un tema.

$theme = wp_get_theme();

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

Ho scoperto che la cosa più vicina allo slug del tema è il nome della directory del tema. Questo può essere trovato utilizzando get_template():

echo get_template(); // twentyfifteen

Riferimento: https://codex.wordpress.org/Function_Reference/get_template

17 mar 2016 14:55:48
Commenti

Ciò catturerebbe il tema genitore se presente.

fuxia fuxia
17 mar 2016 15:40:14
0
wp_get_active_and_valid_themes()

Ho trovato questo in wp-settings.php

// Carica le funzioni per il tema attivo, sia per il tema genitore che per il tema figlio se applicabile.
foreach ( wp_get_active_and_valid_themes() as $theme ) {
    if ( file_exists( $theme . '/functions.php' ) ) {
        include $theme . '/functions.php';
    }
}
30 lug 2019 15:25:27
2
-5

Puoi ottenerlo con get_template_directory_uri()

17 mar 2016 14:16:18
Commenti

Puoi spiegare come get_template_directory_uri() restituisce un percorso, non un nome del tema

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

Il codice dovrebbe essere racchiuso tra backtick o in un blocco di codice.

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