get_template_directory_uri punta al tema genitore invece che al tema child

18 giu 2016, 07:10:01
Visualizzazioni: 127K
Voti: 76

Il problema che sto riscontrando è che get_template_directory_uri punta al tema genitore come site/wp-content/themes/twentythirteen/myGallery/gallery_functions_include.php

ma vorrei che puntasse al mio tema child che dovrebbe essere site/wp-content/themes/child-twentythirteen/myGallery/gallery_functions_include.php

quello che sto usando è include (TEMPLATEPATH . '/myGallery/gallery_functions_include.php');

0
Tutte le risposte alla domanda 3
5
135

get_template_directory_uri() restituirà sempre l'URI del tema genitore corrente.

Per ottenere invece l'URI del tema figlio, è necessario utilizzare get_stylesheet_directory_uri().

Puoi trovarle nella documentazione, insieme a un elenco di altre funzioni utili per ottenere varie posizioni delle directory del tema.


Se preferisci utilizzare una costante, allora TEMPLATEPATH è equivalente a chiamare get_template_directory() (cioè il tema genitore), e STYLESHEETPATH è equivalente a chiamare get_stylesheet_directory() (cioè il tema figlio).

Queste costanti sono impostate dal core di WordPress in wp-includes/default-constants.php e sostanzialmente appaiono così:

define('TEMPLATEPATH', get_template_directory());
...
define('STYLESHEETPATH', get_stylesheet_directory());

Se non esiste un tema figlio, allora sia le funzioni 'template' che 'stylesheet' restituiranno la posizione del tema genitore.

Nota la differenza tra queste funzioni e quelle che terminano con _uri - queste restituiranno il percorso assoluto del server (es. /home/example/public_html/wp-content/yourtheme), mentre le funzioni _uri restituiranno l'indirizzo pubblico (ovvero URL) - es. http://example.com/wp-content/themes/yourtheme.

18 giu 2016 07:20:12
Commenti

che ne dici di include (TEMPLATEPATH . '/myGallery/gallery_functions_include.php'); anche questo va alla directory genitore

Elroy Fernandes Elroy Fernandes
18 giu 2016 07:24:59

@ElroyFernandes Ho aggiunto questo alla mia risposta. STYLESHEETPATH è la costante che dovresti usare invece

Tim Malone Tim Malone
18 giu 2016 07:31:29

Grazie per aver risposto alla domanda invece di dire semplicemente di leggere il manuale. Questo è apparso per primo nei miei risultati di ricerca.

rinogo rinogo
4 mag 2017 21:46:28

Risposta corretta ma pessima scelta del nome da parte di WordPress - non riguarda solo i fogli di stile, ma anche JS, risorse, include ecc.

Paul Feakins Paul Feakins
21 set 2018 19:29:32

@PaulFeakins Non iniziare con le incongruenze nei nomi in WordPress - è una strada lunga e tortuosa che porta chissà dove! ;)

Tim Malone Tim Malone
22 set 2018 00:55:24
0

Dovresti spostare i tuoi template personalizzati, quelli che non sono controllati dal tema attivo, in una cartella child.

Mantieni il tema separato da tutti i file personalizzati in modo che il tema possa essere aggiornato senza perdere il tuo lavoro personalizzato.

Il tema standard si trova qui
------------------------------------
\\Site\wp-content\themes\some_theme
Il tema child si trova qui
---------------------------
\\Site\wp-content\themes\some_theme-child

I tuoi stili e template personalizzati e tutti i tuoi include (elementi come javascript personalizzato, immagini non salvate in WP, font personalizzati, file di dati json, e qualsiasi plugin che potresti caricare) dovrebbero essere spostati nella cartella child FUORI dal tema.

\themes\some_theme
\themes\some_theme-child\ (tutti i tuoi file template php personalizzati qui)
\themes\some_theme-child\images
\themes\some_theme-child\includes 
\themes\some_theme-child\languages
\themes\some_theme-child\json 
\themes\some_theme-child\style

Per le tue pagine di stile personalizzate (non il file style.css sovrascritto del tema) caricale con wp_enqueue_style( 'some-css', get_stylesheet_directory() . '/style/some.css' , false, '0.0.1', 'all');

Usa get_stylesheet_directory_uri() con le tue chiamate xhr, ecc.

6 giu 2018 22:11:16
0

Sostituisci

include (TEMPLATEPATH . '/percorso-del/mio-file.php');

con

include dirname( __FILE__ ) . '/percorso-del/mio-file.php';

questa soluzione dovrebbe funzionare per la maggior parte dei problemi comuni

27 ott 2020 09:35:58