Cum să obții slug-ul temei active în WordPress

17 mar. 2016, 12:41:56
Vizualizări: 17.6K
Voturi: 6

Pot obține anumite informații despre tema activă folosind wp_get_theme(). De exemplu:

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

Există o modalitate de a obține slug-ul temei? În acest caz ar fi twentyfifteen. Te rog să reții că slug-ul temei nu este întotdeauna același cu domeniul de text al temei. Aș dori, de asemenea, să evit înlocuirea de șiruri pe URL-ul temei, dacă este posibil.

Referință: https://codex.wordpress.org/Function_Reference/wp_get_theme

5
Comentarii

Aveți această informație cu get_stylesheet()

mmm mmm
17 mar. 2016 14:41:55

După citirea codex-ului, nu pare posibil fără o anumită manipulare a șirurilor. Se pare că era posibil în trecut, dar acele funcționalități au fost învechite. Poate ar trebui să reconsiderați DE CE căutați acel slug?

RiaanP RiaanP
17 mar. 2016 13:17:01

Am nevoie de el pentru că adaug stiluri specifice temei într-un plugin pe care l-am creat, așa că am nevoie de un identificator unic.

henrywright henrywright
17 mar. 2016 13:21:05

@henrywright Elementele specifice temei ar trebui implementate într-o temă copil. Plugin-urile sunt menite pentru funcționalități specifice site-ului ;-)

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

@PieterGoosen E o regulă bună, dar există și excepții :P

henrywright henrywright
17 mar. 2016 14:31:20
Toate răspunsurile la întrebare 6
0

Puteți obține slug-ul în tabela options, stocat sub numele stylesheet.

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

Răspuns scurt: get_stylesheet();

Tehnic, nu există o valoare 'slug' pentru o temă. Numele directorului unei teme este ceea ce cauți.

get_template();

...va returna numele directorului temei tale, sau al temei părinte în cazul în care tema curentă este o temă copil.

get_option('stylesheet');

Va returna ÎNTOTDEAUNA numele directorului temei active, indiferent dacă este o temă copil sau nu.

get_stylesheet();

Va returna ÎNTOTDEAUNA numele directorului temei active, indiferent dacă este o temă copil sau nu. Această funcție este în esență un wrapper pentru get_option('stylesheet');, cu excepția faptului că aplică și un filtru 'stylesheet'.

function get_stylesheet() {
/**
 * Filtrează numele stylesheet-ului curent.
 *
 * @since 1.5.0
 *
 * @param string $stylesheet Numele stylesheet-ului curent.
 */
return apply_filters( 'stylesheet', get_option( 'stylesheet' ) );
}

Nu sunt sigur ce face filtrul 'stylesheet'. Se pare că ar putea avea legătură cu Customizer-ul.

În marea majoritate a cazurilor, aceste trei funcții ar face același lucru, dar get_stylesheet(); pare cea mai sigură alegere.

20 nov. 2018 00:36:20
0

wp_get_theme obține un obiect WP_Theme pentru o temă.

$theme = wp_get_theme();

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

Am găsit că cel mai apropiat lucru de slug-ul temei este numele directorului temei. Acesta poate fi găsit folosind get_template():

echo get_template(); // twentyfifteen

Referință: https://codex.wordpress.org/Function_Reference/get_template

17 mar. 2016 14:55:48
Comentarii

Asta ar prinde tema părinte dacă există una.

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

am găsit aceasta în wp-settings.php

// Încarcă funcțiile pentru tema activă, atât pentru tema părinte cât și pentru tema copil dacă este cazul.
foreach ( wp_get_active_and_valid_themes() as $theme ) {
    if ( file_exists( $theme . '/functions.php' ) ) {
        include $theme . '/functions.php';
    }
}
30 iul. 2019 15:25:27
2
-5

Puteți obține acest lucru prin get_template_directory_uri()

17 mar. 2016 14:16:18
Comentarii

Poți să explici, te rog, cum. get_template_directory_uri() returnează o cale, nu un nume de temă

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

Codul ar trebui să fie între ghilimele sau într-un bloc de cod.

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