get_template_directory_uri() nel tema child che punta al tema child
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()
?

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();

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.

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.

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.
