Si alguna vez has personalizado tu tema y has visto cómo una actualización borraba todos tus cambios, ya sabes por qué existe el child theme WordPress (o tema hijo). Un child theme es un tema que hereda todo el diseño y la funcionalidad de otro tema (el padre) y te permite modificar solo lo que quieras cambiar: unos estilos, una plantilla, unas funciones. La gracia del invento es que tus cambios viven en una carpeta separada, de modo que cuando el tema padre se actualiza (y debe actualizarse, por seguridad y compatibilidad), tus personalizaciones permanecen intactas. Es el mecanismo oficial de WordPress para personalizar temas de terceros, y crearlo cuesta literalmente dos archivos y cinco minutos. En esta guía vemos qué es exactamente un tema hijo, cuándo lo necesitas de verdad (y cuándo no), cómo crearlo paso a paso con el código completo, cómo funciona la jerarquía de plantillas que lo hace posible y los errores típicos que conviene esquivar desde el principio.
Qué es un child theme y cómo funciona la herencia
Un tema hijo es una carpeta dentro de wp-content/themes que declara, mediante una línea en su hoja de estilos, que su padre es otro tema instalado. A partir de esa declaración, WordPress aplica una regla simple y potente:
- Para las plantillas PHP: si el archivo existe en el hijo, se usa el del hijo; si no, se usa el del padre. Copiar
header.phpdel padre al hijo y editarlo ahí sustituye la cabecera sin tocar el original. - Para los estilos y funciones: no se sustituyen, se suman. El
functions.phpdel hijo se carga además del padre (y antes), y el CSS del hijo se encola junto al del padre para sobrescribir reglas concretas.
El resultado práctico: el tema padre sigue siendo el motor (y puede actualizarse con normalidad), mientras el hijo actúa como una capa fina con tus diferencias. Actualizar el padre nunca toca la carpeta del hijo, así que tus cambios sobreviven a cualquier actualización.
Cuándo necesitas un tema hijo (y cuándo no)
No toda personalización justifica un child theme. La línea divisoria es clara:
Sí necesitas un child theme si…
- Vas a modificare i file del tema: template PHP, o CSS oltre a qualche piccola modifica.
- Vuoi aggiungere funzioni legate al design (registrare un menu extra, un'area widget, dimensioni delle immagini).
- Gestisci siti web di clienti dove gli aggiornamenti devono poter essere applicati senza timore.
Non ne hai bisogno se…
- Vuoi solo alcuni ritocchi CSS: el campo “CSS adicional” del personalizador (o de los estilos globales en temas de bloques) los guarda en la base de datos, a salvo de actualizaciones.
- La tua modifica è pura funzionalità (uno shortcode, un'impostazione di WooCommerce, uno snippet di tracciamento): questo appartiene a un plugin o a un gestore di snippet come WPCode, perché deve sopravvivere anche a un cambio di tema.
- Usi un tema a blocchi moderno e tutte le tue modifiche rientrano nell'editor del sito: le modifiche apportate lì vengono già salvate nel database.
La regola d'oro: il design che tocca i file del tema, al child theme; la funzionalità indipendente dal design, a un plugin. E se stai ancora scegliendo un tema, fallo pensando anche a questo: un buon tema ben mantenuto merita il piccolo investimento di creare un child theme prima di personalizzare. Nella nostra guida su come scegliere il tema perfetto per il tuo sito WordPress ripassiamo quali segnali distinguono un tema solido.
Come creare un child theme WordPress passo dopo passo
Creeremo un child theme per un tema padre di esempio; useremo Astra, ma il processo è identico per qualsiasi tema classico: cambia solo l'identificatore del tema padre. Hai bisogno di accesso ai file (SFTP o il gestore dell'hosting) o, in locale, del tuo esploratore di file.
Passo 1: crea la cartella
All'interno di wp-content/themes, crea una nuova cartella. Per convenzione si usa il nome del tema padre con il suffisso -child:
wp-content/themes/astra-child/
├── style.css
└── functions.php
Passo 2: crea style.css con l'intestazione
El archivo style.css è obbligatorio e la sua intestazione di commento è ciò che trasforma la cartella in un tema. La riga critica è Template: deve contenere il nome esatto della cartella del tema padre (sensibile alle maiuscole):
/*
Theme Name: Astra Child
Theme URI: https://biblioweb.es/
Description: Tema hijo de Astra para personalizaciones seguras
Author: BiblioWeb
Author URI: https://biblioweb.es/
Template: astra
Version: 1.0.0
Text Domain: astra-child
*/
/* A partir de aquí, tus estilos personalizados. */
Passo 3: accoda gli stili in functions.php
Contrariamente a quanto si faceva in passato (con @import, oggi sconsigliato perché lento), il foglio di stile del tema padre viene caricato con un accodamento corretto da functions.php:
<?php
/**
* Encolar la hoja de estilos del tema padre y la del hijo.
*/
add_action( 'wp_enqueue_scripts', 'astra_child_enqueue_styles' );
function astra_child_enqueue_styles() {
// Estilos del padre.
wp_enqueue_style(
'astra-parent-style',
get_template_directory_uri() . '/style.css',
array(),
wp_get_theme( get_template() )->get( 'Version' )
);
// Estilos del hijo, cargados después para poder sobrescribir.
wp_enqueue_style(
'astra-child-style',
get_stylesheet_directory_uri() . '/style.css',
array( 'astra-parent-style' ),
wp_get_theme()->get( 'Version' )
);
}
Fai attenzione al dettaglio delle due funzioni gemelle: get_template_directory_uri() punta sempre al tema padre y get_stylesheet_directory_uri() al child theme. Confonderle è l'origine della metà dei problemi con i child theme. Nota: alcuni temi (Astra tra questi) accodano già i loro stili in modo che il child theme si carichi da solo; se vedi stili duplicati, semplifica l'accodamento lasciando solo il foglio di stile del child theme con la dipendenza appropriata.
Passo 4: attiva e verifica
Ve a Aspetto → Temi: verás “Astra Child” como un tema más. Actívalo. La web debe verse exactamente igual que con el padre; si se ve sin estilos, revisa el valor de Template e l'accodamento. Con questo, il tuo child theme WordPress è ora attivo e pronto per ricevere personalizzazioni. Opzionalmente, aggiungi un'immagine screenshot.png (1200×900) nella cartella del child theme affinché appaia come miniatura nel selettore.
Passo 5 (opzionale): sovrascrivi i template
Per modificare un template del tema padre, copialo nel child theme rispettando il suo percorso relativo e modificalo lì. Ad esempio, per personalizzare il template degli articoli singoli, copia single.php dal tema padre alla root del child theme; per un template all'interno di sottocartelle (frequente in WooCommerce), rispetta la struttura: woocommerce/single-product.php. WordPress userà automaticamente la tua copia.
Cosa personalizzare dal child theme: esempi utili
Con la struttura impostata, il child theme diventa il tuo spazio di lavoro sicuro. Alcuni usi comuni:
Stili personalizzati
/* En style.css del hijo */
.site-title {
font-size: 2.2rem;
letter-spacing: -0.02em;
}
.entry-content a {
text-decoration: underline;
text-underline-offset: 3px;
}
Funzioni legate al design
// En functions.php del hijo: registrar un menú adicional.
add_action( 'after_setup_theme', 'astra_child_menus' );
function astra_child_menus() {
register_nav_menu( 'menu-legal', 'Menú legal del pie' );
}
// Un tamaño de imagen a medida para tarjetas del blog.
add_action( 'after_setup_theme', 'astra_child_image_sizes' );
function astra_child_image_sizes() {
add_image_size( 'tarjeta-blog', 600, 400, true );
}
Ricorda il criterio della sezione precedente: se lo snippet non dipende dal design (analisi, reindirizzamenti, impostazioni di comportamento), non inserirlo nel functions.php del figlio; portalo in un plugin proprio o in un gestore di snippet, affinché sopravviva a un futuro cambio di tema. Molti dei plugin essenziali di WordPress esistono proprio per non dover mettere tutto nel tema.
Errori comuni con i child theme
- Template scritto male. Se
Template: astrano coincide exactamente con el nombre de la carpeta del padre, WordPress mostrará el hijo como “roto”. Es el fallo número uno. - Usare @import nel CSS. Funziona, ma serializza i download e penalizza la velocità. Accoda sempre da
functions.php. - Copiare troppi template. Ogni template copiato al figlio smette di ricevere i miglioramenti che il padre incorpora nei suoi aggiornamenti. Copia solo ciò che intendi realmente modificare, e rivedi le tue copie quando il padre pubblica grandi cambiamenti.
- Confondere functions.php. El del hijo no sustituye al del padre: ambos se cargan. Si declaras una función con el mismo nombre que una del padre no “la sobrescribes”: provocas un error fatal, salvo que el padre la haya envuelto en
function_exists(). - Creare il figlio dopo aver personalizzato il padre. L'ordine corretto è: installare il padre, creare il figlio, attivare il figlio, e solo allora personalizzare. Le impostazioni del personalizzatore vengono salvate per tema, quindi all'attivazione del figlio potrebbe essere necessario riconfigurare alcune opzioni (o migrarle con un plugin di esportazione delle impostazioni).
- Modificare senza backup. Un errore di sintassi PHP in
functions.phpfa crollare il sito web. Modifica via SFTP (mai dall'editor di file del desktop in produzione) e tieni una copia recente per annullare rapidamente.
Child theme e temi a blocchi: la sfumatura del 2026
Con i temi a blocchi (Full Site Editing), gran parte della personalizzazione classica (intestazioni, piè di pagina, template) viene fatta visivamente nell'editor del sito e viene salvata nel database, non nei file. Questo riduce i casi in cui un child theme è indispensabile, ma non lo manda in pensione: rimane la via corretta per aggiungere CSS strutturati, modificare theme.json (la configurazione degli stili globali del tema, che il figlio può anche sovrascrivere), registrare pattern propri o modificare i template HTML del padre. Il meccanismo di ereditarietà funziona allo stesso modo: stesso style.css con il suo Template, e i template del figlio (nella cartella templates/) hanno priorità su quelle del padre. Il riferimento completo si trova nel manuale ufficiale dei child theme di developer.wordpress.org.
Preguntas frecuentes
Un child theme influisce sulle prestazioni di WordPress?
L'impatto è trascurabile: un foglio di stile aggiuntivo (spesso minuscolo) e un functions.php extra. Ben costruito, con l'accodamento corretto e senza @import, un tema figlio non rallenta il sito web in modo misurabile.
Posso creare un child theme di un child theme?
No. WordPress ammette solo un livello di ereditarietà: un figlio non può essere padre di un altro tema. Se hai bisogno di varianti, lavora con un solo figlio ben organizzato o valuta un approccio diverso (template propri, plugin di personalizzazioni).
Cosa succede se cambio tema padre?
Il figlio è legato al suo padre specifico: se attivi un altro tema, il figlio smette di funzionare così com'è. Gli stili e i template raramente sono trasferibili (dipendono dalle classi e dalla struttura del padre), ma le funzioni indipendenti dal design sì, un altro motivo per mantenerle in un plugin e non nel tema.
Ci sono plugin che creano il child theme per me?
Sì, plugin come Child Theme Configurator generano la struttura con un clic e persino migrano le impostazioni del personalizzatore dal padre al figlio. Sono un'opzione legittima se non vuoi toccare i file, anche se, come hai visto, il processo manuale richiede due file e cinque minuti, e capirlo ti servirà ogni volta che qualcosa non quadra.
Conclusión
Il child theme WordPress è uno di quei piccoli pezzi che definiscono la differenza tra personalizzare bene e personalizzare con data di scadenza. Due file (style.css con la sua intestazione e functions.php con l'accodamento) bastano per separare le tue modifiche dal tema originale e blindarle contro gli aggiornamenti. Le regole per non sbagliare stanno in tre righe: crea il figlio prima di personalizzare, copia al figlio solo i template che modifichi davvero, e riserva il functions.php del tema per funzioni di design, lasciando la funzionalità generale ai plugin. Se il tuo sito web usa un tema di terze parti e hai intenzione di toccare una sola riga dei suoi file, non esitare: installa il tema figlio oggi stesso. È l'investimento di cinque minuti più redditizio dell'ecosistema WordPress.