Come fare in modo che get_template_part controlli sempre prima il tema child?

19 giu 2011, 15:55:34
Visualizzazioni: 21.2K
Voti: 9

Come posso forzare WordPress a controllare sempre prima la cartella del tema child quando esegue get_template_part?

Esempio: il tema child carica get_template_part('content', 'inventory') in single.php. Poiché tutti i temi child (e ce ne sono molti) condividono lo stesso template base per l'inventario, il file content-inventory.php si trova nel tema genitore. Fin qui tutto bene.

Vorrei aggiungere una piccola sezione al suddetto template dell'inventario che sarà unica per ogni tema child. Aggiungendo get_template_part('content', 'inventory-special') in content-inventory.php non controllerà prima la directory del tema child.

1
Commenti

A voi due che avete votato negativamente la mia risposta senza commentare il motivo, grazie per il nulla. Come si può migliorare se non si riceve una critica costruttiva?

MTT MTT
19 giu 2011 23:24:06
Tutte le risposte alla domanda 2
2

Funziona così per impostazione predefinita. La funzione get_template_part() utilizza locate_template() che scorre i file dei template in ordine di specificità e percorso del tema genitore/figlio.

Quindi, se il tuo Child Theme include un file content-inventory.php, allora get_template_part() lo includerà; in caso contrario, cercherà content-inventory.php nel tema genitore. Se non lo trova, cercherà poi content.php prima nel child e poi nel parent.

MODIFICA:

Provo a interpretare ciò che intendi; per favore chiarisci se ho capito male...

Vuoi includere un nuovo file di template part all'interno di un file template del Parent Theme chiamato content-inventory.php, giusto?

L'unico modo, per quanto ne sappia, per farlo è copiare content-inventory.php nel tuo Child Theme, e poi aggiungere la nuova chiamata get_template_part() dove necessario.

Se un file chiamato content-inventory.php è presente sia nel Parent che nel Child Theme, allora WordPress utilizzerà sempre la versione del Child Theme, se incluso usando get_template_part().

19 giu 2011 16:47:28
Commenti

@Kaiser, @Chip Bennett: WP controllerà ovviamente il tema genitore per content-inventory.php. Il Codex e la semplice esperienza lo rendono chiaro. Tuttavia, se il file cercato (livello 2) si trova nella cartella del tema genitore, WP non ricontrolla il tema child per un get_template_part contenuto all'interno del file cercato (un include di terzo livello). Per voi ha funzionato diversamente?

MTT MTT
19 giu 2011 23:17:26

Non capisco la tua domanda/problema. Per qualsiasi nome di file template, WordPress controlla sempre prima il Child Theme. Puoi spiegare cosa intendi con file di secondo e terzo livello?

Chip Bennett Chip Bennett
19 giu 2011 23:37:31
0

get_template_part() lo fa per impostazione predefinita.

19 giu 2011 16:46:41