21 Parti del template nei temi child
Molti temi collocano l’output del loop in un template file content.php, separando ulteriormente il codice pesante dal markup e dal design di base.
In precedenza si otteneva lo stesso risultato ponendo il loop completo nel suo template, chiamato in genere loop.php (o, per esempio, loop-category.php), ma oggi gli sviluppatori tendono a mantenere il loop vero e proprio e il suo output separati. Questo è di particolare aiuto con i temi Child, perché vi consente di determinare con precisione un tipo di contenuto specifico nei vostri temi Child invece di sovrascrivere per intero un template file.
Immaginiamo di avere un menu nel tema genitore che include nav-archives.php e, non trovandolo, ripiega su nav.php:
<?php get_template_part( 'nav', 'archives' ); ?>
Se volete, nel vostro tema Child potete puntare facilmente a nav-archives.php, così come fate con l’output di un contenuto specifico. In questo modo, usando i temi Child, potrete anche modificare le parti del sito che non si trovano nel loop, risparmiando tempo e fatica nella manutenzione del tema.
Un tema child viene anche molto utile quando si vuole legarlo ad eventi, pensate al cambiamento di look natalizio.
Regola d’oro è il rispetto della semantica
Localizzazione
I temi Child vengono creati per differenziarsi da quelli genitore; a volte questo può voler dire che ci sono nuove stringhe che necessitano di essere tradotte. Ovviamente non vorrete aggiungerle ai file della lingua del tema genitore, perché questo entrerebbe in conflitto con i fondamenti dei temi genitore/Child. Invece, le aggiungerete usando load_child_theme_textdomain() e aggiungendo i file della lingua dei vostri temi Child.
Quanto segue in functions.php preparerà il tema per la localizzazione:
add_action( 'after_setup_theme', 'smashing_child_setup' ); function smashing_child_setup() { load_child_theme_textdomain( 'smashing_child', get_stylesheet_directory() . '/lang' ); }
add_action() serve per aggiungere un’azione, in questo caso si aggiunge la funzione che abbiamo chiamato smashing_child_setup() ad after_setup_theme.
after_setup_theme è un hook che si utilizza generalmente per eseguire la configurazione di base, la registrazione e le azioni di inizializzazione per un tema. Si aggancia questo hook subito prima che le pagine del tema vengano caricate e in questo caso aggiungo a questo gancio la funzione di callback personalizzata smashing_child_setup().
La funzione usa il template tag chiamato load_child_theme_textdomain(), che carica il textdomain (it-IT) del tema, dicendo che il child è smashing_child (il nome del tema child) e cerca le traduzioni disponibili nella directory lang all’interno del percorso del tema. Il percorso viene ricavato dalla funzione get_stylesheet_directory().
Tutto quello che rimane da fare è passare smashing_child come textdomain per le stringhe che volete tradurre, proprio come accade con tutti i temi standard.
ereditarietà
Ogni file del tema child ha la precedenza su quello del tema genitore, conseguentemente il template file style.css, prevale su quello genitore, questo accade anche su index.php e su tutti gli altri template files. Si può anche aggiungere nuovi template files modificando la struttura del tema principale, ovviamente il tutto con il giusto raziocinio: se vado a stravolgere completamente il tema è come se creassi un nuovo tema perdendo il vantaggio del tema child. In linea di massima nel tema child le modifiche dovrebbero avvenire perlopiù in style.css per alterare l’aspetto e nel function.php per modificare le funzionalità.
Problemi comuni
In primo luogo, per funzionare un tema child ha bisogno del genitore in wp-content/themes/ , sun utente lo sposta o lo cancella il child funzionerebbe male o non funzionerebbe proprio.
Inoltre per visualizzare un’immagine, utilizzate get_template_directory_uri() e lo ripetete. Questo non funziona in un tema Child, dato che la directory dei template è in realtà la directory del tema genitore
<img src="<?php echo get_template_directory_uri(); ?>/images/the-image.jpg" alt="Immagine" />
Passando stylesheet_directory_uri() invece di get_template_directory_uri() nel tema Child, WordPress cercherà nella cartella che contiene il foglio di stile del tema, che è proprio quella del tema Child:
<img src="<?php echo get_stylesheet_directory_uri(); ?>/images/the-image.jpg" alt="Immagine" />
I temi child possono essere usati anche nella modalità WordPress multisito, costruendo una rete e assegnando il tema genitore al tema principale, mentre i vari temi child ai siti della rete interna.
Cercate di trovare il giusto compromesso nel design, essenzializzare le funzioni, eliminando quelle superflue dal tema genitore. Ricordate che alcune delle attività per cui utilizzate i plugin possono essere effettuate altrettanto bene dall’interno dei vostri temi, sfruttando function.php che non altro che un template file esterno alla parte del design del tema, che esiste semplicemente per aggiungere ulteriore funzionalità attraverso la codifica PHP. Potete utilizzare i framework dei temi, che è costituita da temi semivuoti progettati per essere modificati da voi appoggiandosi agli hook di azione .
Infine qualsiasi tema che funzioni in maniera autonoma può essere considerato un tema genitore; quello che conta davvero è quando diventa un tema Child.
b
a
b
a
b
a
b
a
b
a
b