Hai mai passato ore a personalizzare un tema WordPress, solo per vedere tutto cancellato da un aggiornamento? Succede più spesso di quanto pensi. Noi, di Meteora Web, abbiamo visto clienti perdere giorni di lavoro perché hanno modificato direttamente i file del tema parent. La soluzione esiste, si chiama child theme, ed è una pratica obbligatoria — non un optional.
Perché un child theme non è un optional
Ogni tema WordPress riceve aggiornamenti: sicurezza, compatibilità, bug fix. Se hai modificato i file originali (style.css, functions.php, template), al prossimo aggiornamento le tue personalizzazioni spariscono. Un child theme ti permette di ereditare tutto dal tema parent e di sovrascrivere solo quello che ti serve. Il tema parent rimane intatto e aggiornabile.
Noi lo vediamo come una questione di proprietà del codice. Senza child theme, i tuoi cambiamenti sono ostaggio degli aggiornamenti altrui. Come abbiamo discusso nell'articolo Tecnologia mai neutrale, anche le scelte tecniche hanno un impatto etico e pratico: qui parliamo di responsabilità sulla manutenibilità del tuo sito.
Come funziona un child theme: meccanica base
Un child theme è una cartella con almeno due file: style.css e functions.php. WordPress carica prima il tema parent, poi il child. I file del child hanno la precedenza: se copi un template nella cartella child, WordPress lo usa al posto di quello del parent. Le funzioni PHP del child vengono eseguite dopo quelle del parent.
Il filesystem
Vai in /wp-content/themes/ e crea una cartella con nome tipo twentytwentyfour-child. La convenzione è: nome-parent-child. Tutto qui.
Lo style.css obbligatorio
Il file style.css deve avere un'intestazione specifica. Il campo Template indica il nome della cartella del tema parent.
/*
Theme Name: Twenty Twenty-Four Child
Template: twentytwentyfour
*/
Attenzione: il nome del Template deve corrispondere esattamente al nome della cartella del tema parent (case-sensitive). Senza questa riga, il child theme non funziona.
Il functions.php per caricare i fogli di stile
Il child theme non eredita automaticamente il CSS del parent. Devi caricarlo esplicitamente nel functions.php del child.
get('Version') );
}
add_action( 'wp_enqueue_scripts', 'child_theme_enqueue_styles' );
Nota: get_template_directory_uri() punta al parent, get_stylesheet_uri() al child. Sbagliare questa differenza è l'errore più comune. Usa sempre get_stylesheet_directory_uri() per risorse che vuoi siano sovrascrivibili dal child.
Template override: quando e come
Vuoi modificare l'aspetto di un singolo post? Copia single.php dal parent nella cartella del child e modificalo. WordPress lo userà automaticamente.
Override di single.php
// Nel tuo child theme: single.php
', '' );
the_content();
endwhile;
get_footer();
Lo stesso vale per page.php, archive.php, header.php, footer.php, ecc. Attenzione: se il parent usa get_template_part(), dovrai copiare anche i file parziali.
Modificare funzioni senza toccare il parent
Non serve copiare tutto il functions.php del parent. Nel child puoi aggiungere nuove funzioni, rimuovere hook esistenti o modificarne i parametri.
// Rimuove un'azione registrata dal parent
function child_remove_parent_hooks() {
remove_action( 'after_setup_theme', 'parent_theme_setup_function' );
}
add_action( 'init', 'child_remove_parent_hooks' );
// Aggiunge un nuovo filtro
add_filter( 'excerpt_length', function( $length ) {
return 30;
} );
Per modificare funzioni del parent senza copiarle, usa i filtri (hook) già esistenti. Se proprio devi sovrascrivere una funzione, puoi dichiararla nel child solo se il parent la definisce con if ( ! function_exists() ). Altrimenti, devi usare remove_action o remove_filter e poi riaggiungerla modificata.
Errori comuni (e come evitarli)
- Template header mancante o errato: senza la riga
Template:nel style.css, il child non funziona. - Caricare due volte lo stesso CSS: se il parent già carica il suo style, non devi ricaricarlo nel child a meno che tu non voglia sovrascriverlo. Usa la dipendenza nel wp_enqueue_style.
- Confondere i path:
get_template_directory_uri()punta al parent,get_stylesheet_directory_uri()al child. Se aggiungi un file nel child (es. un'immagine), usaget_stylesheet_directory_uri(). - Override parziale di template: se il parent usa
get_template_part( 'content', get_post_format() ), devi copiare anche il filecontent.phpocontent-{format}.phpnel child, non basta copiare single.php. - Dimenticare di aggiornare il child dopo modifiche al parent: se il parent aggiunge un nuovo template, il child non lo eredita automaticamente. Dovrai copiarlo se vuoi sovrascriverlo, altrimenti verrà usato quello del parent.
In sintesi — cosa fare adesso
- Controlla se il tuo tema è già personalizzato direttamente: apri il file style.css del tema attivo. Se non c'è la riga
Template:e hai modificato file, sei a rischio. - Crea un child theme: segui la procedura sopra: cartella, style.css con Template, functions.php per enqueue.
- Attivalo e testa: passa al child theme, verifica che il sito funzioni correttamente (stessa grafica, nessun errore).
- Sposta tutte le personalizzazioni: copia i template e le funzioni modificate dal parent al child. Togli le modifiche dal parent.
- Imposta un versionamento: usa Git per tracciare i cambiamenti del child theme. È il minimo per non perdere il lavoro.
Per approfondire, leggi la documentazione ufficiale di WordPress sui child theme. Noi, di Meteora Web, consigliamo a ogni cliente di partire con un child theme anche per progetti minimi. Costa zero, ti salva da disastri.
Sponsored Protocol