Temi

Genialità di un Tema Child

image_pdfimage_print

Introduzione

Un tema creato da alcuni anni può funzionare ancora bene ma mancheranno sicuramente alcune funzionalità più recenti e che possono essere per noi utili al progetto. In WordPress la compatibilità con le versioni precedenti è ben supportata ma non può esserlo per sempre. Quindi la compatibilità è un argomento molto delicato ed è una delle principali cause della creazione di temi base che vengono poi estesi con i temi child. Quindi l’utente può aggiornare il tema principale senza perdere nessuna modifica. Può esserti utile leggere prima questo articolo “Plugin o functions.php?“.

Child Theme WordPress

I temi child permettono di creare temi che si basano su temi genitori utilizzati come template, modificando parti del tema di partenza per adattarli alla proprie esigenze. Può capitare che, o a noi o ad cliente, piace un tema nel complesso ma non gli piacciono i font o i colori, in questo caso creare un child-theme può essere una valida soluzione. Oppure può verificarsi l’esigenza di avere un tema che ci soddisfa ma abbiamo bisogno di un nuovo template di pagina, anche in questo caso possiamo risolvere con un tema child.

Il tema child si trova in una cartella propria e divisa dal tema padre, così come tutti i suoi file, pertanto quando carichiamo la nuova versione del tema originale sulla quale abbiamo basato il nostro sito, sovrascriviamo soli i file di quel tema e non il tema child che contiene tutte le modifiche.

Quando possiamo utilizzare i child theme

I theme child possono essere utilizzati in molte situazioni e per le più disparate necessità ma vediamo quali sono  le principali per le quali ha veramente senso creare una tema child:

  1. Apportare delle modifiche al sito ma non alle sue funzionalità;
  2. abbiamo in uso un tema di terze parti o un tema che vogliamo utilizzare nello stato attuale;
  3. non vogliamo modificare direttamente il tema esistente nel caso in cui si possono creare problemi (in particolare se non siamo esperti di sviluppo in WordPress);
  4. nel nostro sito è in esecuzione un tema progettato per essere un parent theme (ad esempio se il tema è stato sviluppato partendo da un framework).

I child theme costituiscono un modo efficace e sicuro per aggiungere personalizzazioni ad un tema. Vediamo nel dettaglio come realizzarne uno.

Creiamo, all’interno della cartella themes, una nuova cartella chiamata: NomeTema-child, dove “NomeTema” è il tema genitore. Al suo interno andremo a creare due file principali (e obbligatori): style.css e functions.php.

Theme child: analizziamo i due file principali

Ogni child theme deve avere almeno due file:

  1. un foglio di stile, style.css
  2. file di funzioni, il functions.php

Il file style.css conterrà in alto il testo commentato che comunica a WordPress che questo è un child theme e qual è il suo tema genitore. Il file functions.php contiene una funzione che accoda il foglio di stile del tema principale.

Di seguito il codice da aggiungere all’interno del file style.css

/*
Theme Name:  Il mio tema child per Twenty Nineteen.
Theme URI:  https://developress.it
Description:  Questo tema ha molte più funzionalità del tema base come ad esempio la gestione dei custom field e dei CPT
Author:  Developress
Textdomain:  developress
Author URI:  https://developress.it
Template:  twentynineteen
Version:  1.0
License:  GNU General Public License v2 or later
License URI: https://www.gnu.org/licenses/gpl-2.0.html                 
*/

Di seguito, invece, il codice per il file functions.php

<?php
/* enqueue script for parent theme stylesheeet */        
function developress_parent_styles() {
 
 // enqueue style
 wp_enqueue_style( 'parent', get_template_directory_uri().'/style.css' );                       
}
add_action( 'wp_enqueue_scripts', 'developress_parent_styles');

il codice sopra utilizza la funzione wp_enqueue_style() per accodare il foglio di stile del tema principale, con la funzione get_template_directory_uri() che individua la location dove è archiviato il file.

Il child theme non deve includere obbligatoriamente altri file. A differenza del tema principale, non è necessario il file index.php come fallback se non ci sono file più specifici nel tema (vedere la gerarchia dei temi per maggiori dettagli). Questo perché, se non esiste un template file nel child theme, WordPress utilizzerà il file presente nel tema principale.

Quindi, a seconda di quello che vogliamo fare nel nostro child theme, aggiungiamo un codice extra al foglio di stile, al file functions.php, oppure creiamo file extra nel child theme per sovrascrivere il tema genitore. Questi potrebbero includere uno o più di:

  • Template files per sovrascrivere lo stesso file del tema principale, come page.php, quando si desidera personalizzare la visualizzazione di pagine;
  • parti di template come header.php o footer.php, quando si desidera personalizzare queste parti del design del sito.
  • Template part extra invocate dai template file del child theme. Quindi, se vogliamo personalizzare l’intestazione durante la visualizzazione di pagine statiche, è necessario creare un file nel child theme denominato header-page.php e un template file denominato page.php, che sostituisca il page.php del tema genitore. Questo template file sarebbe identico a quello del tema principale, ad eccezione della chiamata al file header, che chiamerà il file header-page.php invece di header.php.
  • Inclusioni extra di file per altre funzionalità. Se abbiamo la necessità di aggiungere molto codice nel functions.php e organizzarlo, possiamo creare più file da includere per ogni gruppo di funzionalità e quindi richiamarli nel file functions.php del child theme.

Theme Child: quando non conviene utilizzarli?

Anche se i temi child rappresentano una buona pratica in fase di sviluppo, ci sono alcune situazioni in cui è sconsigliato utilizzarli in quanto è preferibile apportare modifiche seguendo altre strade. Vediamo quando è meglio non utilizzare i child theme:

  1. quando il tema è stato sviluppato da noi stessi e non abbiamo bisogno di pubblicarlo altrove;
  2. quando le personalizzazioni che vogliamo fare sono soltanto funzionali, come ad esempio l’aggiunta di un custom post type o l’utilizzo di filtri, in questi casi è meglio utilizzare un plugin.

Una volta completato il theme child è necessario attivarlo da backend in aspetto > temi

Questo articolo rappresenta una guida introduttiva ai temi child di WordPress, quindi se hai dubbi o curiosità di approfondire il concetto, non esitare a contattarmi.