get_template_directory_uri() nel tema child che punta al tema child

17 mag 2017, 00:09:17
Visualizzazioni: 25.6K
Voti: 8

Secondo la documentazione (https://codex.wordpress.org/Child_Themes e https://developer.wordpress.org/reference/functions/get_template_directory_uri/), ho capito che get_template_directory_uri() dovrebbe restituire l'URL della directory del tema genitore se utilizzato all'interno di un tema child. Tuttavia, questo non sta funzionando nel mio caso.

In un tema child che sto sviluppando, quando uso get_template_directory_uri() restituisce l'URL della directory del tema child, non quella del suo tema genitore. Se faccio clic su Dettagli tema per il tema child nella pagina di gestione dei temi, WordPress indica che il tema è figlio di un altro tema, esattamente come mi aspetterei. Ho una

Template: parent

riga nel file style.css del tema child.

Altri fatti rilevanti:

  • Sto utilizzando WordPress Multi-Site
  • Ho sviluppato il tema genitore e lo sto utilizzando per uno degli altri siti all'interno del mio Multi-Site e funziona perfettamente
  • Entrambi i temi (genitore e child) sono attivati a livello di Network e accessibili nel sito su cui sto lavorando
  • Ho provato a far puntare il tema child al tema twentyfourteen e sto osservando lo stesso comportamento, quindi non credo sia un problema del tema genitore
  • Ho disattivato tutti i miei plugin per vedere se uno di questi fosse il problema senza successo - nessuno dei plugin sembra essere la causa
  • Ho creato una copia di twentyfourteen e l'ho resa un tema child del mio tema genitore e si verifica lo stesso problema
  • Nella mia copia di twentyfourteen, ho anche aggiunto una riga Template: nel file style.css per renderlo un tema child di twentyfourteen e sto osservando lo stesso comportamento (cioè, la pagina di gestione dei temi indica che il tema copiato è figlio di twentyfourteen ma la funzione get_template_directory_uri non mi restituisce la directory del tema genitore)

Qualcuno ha suggerimenti su quale potrebbe essere il problema? Oppure sto interpretando male il funzionamento previsto di get_template_directory_uri()?

4
Commenti

qual è la tua attuale riga Template: parent?

hwl hwl
17 mag 2017 02:21:11

Se utilizzi la combinazione tema figlio/genitore in un'installazione a sito singolo, la funzione get_template_directory_uri() funziona correttamente?

Nathan Johnson Nathan Johnson
17 mag 2017 03:19:52

@hwl - quando cercavo di puntare al template Twenty Fourteen come genitore, la riga era "Template: twentyfourteen". E la pagina di gestione dei temi indicava che il tema figlio puntava a Twenty Fourteen come tema genitore.

Bill Bill
17 mag 2017 21:30:43

@NathanJohnson - Ho installato un sito WordPress di test (no multi-site, nessun plugin, molto semplice) e get_template_directory_uri() funziona come previsto - punta correttamente al tema padre in un tema child. Ho iniziato a copiare gradualmente le modifiche di configurazione sul sito di test (ad esempio, rendendolo multi-site, wp-config.php, .htaccess ...) e ancora non sono riuscito a riprodurre il problema sul sito di test, quindi non so ancora quale sia il problema. Potrei dover semplicemente fare un backup del database sul multisite su cui sto lavorando e reinstallarlo.

Bill Bill
17 mag 2017 21:33:34
Tutte le risposte alla domanda 2
2
11

Ciò di cui hai bisogno è get_stylesheet_directory_uri, che funziona esattamente come get_template_directory_uri ma restituirà la directory del tema child se stai utilizzando un tema child, oppure restituirà la directory del tema genitore in caso contrario.

echo get_stylesheet_directory_uri();
17 mag 2017 00:35:26
Commenti

Grazie per la risposta, ma sto usando un child theme e sto cercando di ottenere il foglio di stile del genitore, non quello del child. Sto seguendo le indicazioni su https://codex.wordpress.org/Child_Themes per accodare il foglio di stile del genitore insieme a quello del child nel tema figlio, ma la funzione get_template_directory_uri() che usano nel loro esempio restituisce l'URL del child theme, il che non mi aiuta a ottenere l'URL per il foglio di stile del tema genitore.

Bill Bill
17 mag 2017 02:31:48

Oh, scusa, ho frainteso la tua domanda. 1) C'è qualche URL che mostra questo comportamento così possiamo dare un'occhiata più da vicino? 2) Giusto per essere sicuri, suppongo che tu stia usando l'handle corretto quando accodi lo stile del tema genitore?

Celso Bessa Celso Bessa
17 mag 2017 03:58:17
2

CAUSA

OK, dopo aver analizzato il codice di WordPress e il database, il problema era

get_option('template')

che viene chiamato da

wp-includes/theme.php : get_template()

restituiva il tema figlio, invece del tema genitore, ma solo per un sito specifico all'interno della mia multi-site. E guardando nella tabella wp_{SITE-ID}_options per quel sito, il record del database dove

option_name = "template"

il record puntava al tema figlio, non al tema genitore. Non sono sicuro del motivo per cui i Dettagli del Tema nella pagina di gestione dei temi nel Dashboard indicavano che il mio tema figlio problematico era un tema figlio quando il record del database non era corretto.

Per quanto riguarda il motivo per cui questa voce del database è stata danneggiata, non sono sicuro, ma quando stavo inizialmente cercando di sviluppare il tema figlio problematico, ha interrotto la mia WordPress Multi-Site (incluso il Dashboard) e quindi ho temporaneamente rinominato il nome della cartella del tema sul server per far sì che WordPress tornasse a un tema predefinito - forse questo è stato la causa.

SOLUZIONE

Cambiare il tema in un tema diverso e poi tornare al tema figlio ha risolto il problema - fa sì che il record del database rilevante (cioè, option_name = "template" in wp_{SITE-ID}_options) venga impostato sul valore corretto, cioè il tema genitore.

18 mag 2017 23:29:01
Commenti

Sei un eroe. Grazie per aver condiviso la tua soluzione qui. Ho ereditato un tema "child" fatto male che non faceva correttamente riferimento al parent. La tua soluzione era esattamente quella giusta.

Glitcher Glitcher
1 ago 2018 13:59:34

L'eroe di cui abbiamo bisogno, ma che non meritiamo. Ha funzionato anche per me. Grazie.

Sajidur Rahman Sajidur Rahman
15 set 2022 12:40:02