Child themes: personalizar sin perder tus cambios
WordPress
19

El problema de editar el tema directamente

Cada vez que un tema de WordPress se actualiza, todos los archivos originales se sobrescriben. Si personalizaste el style.css o modificaste un template como single.php en el tema padre, esos cambios desaparecen en la siguiente actualización. Y si decides no actualizar para no perderlos, tarde o temprano tendrás un problema de seguridad.

Un child theme es la solución oficial: un tema que hereda todo del padre pero donde tú puedes agregar o sobrescribir archivos sin tocar el original.

Estructura mínima de un child theme

Crea una carpeta nueva en wp-content/themes, por ejemplo mitema-child. Dentro necesitas dos archivos:

mitema-child/
├── style.css
└── functions.php

El style.css debe empezar con una cabecera que declare cuál es el tema padre. El campo clave es Template, que apunta al nombre de carpeta del padre:

/*
Theme Name: Mi Tema Child
Template: mitema
Version: 1.0.0
*/

Encolar correctamente las hojas de estilo

Antes bastaba con un @import dentro del CSS, pero esa técnica es lenta y ya no se recomienda. La forma correcta es encolar los estilos desde functions.php:

add_action( 'wp_enqueue_scripts', 'mitema_child_enqueue' );
function mitema_child_enqueue() {
    wp_enqueue_style( 'mitema-parent', get_template_directory_uri() . '/style.css' );
    wp_enqueue_style(
        'mitema-child',
        get_stylesheet_directory_uri() . '/style.css',
        [ 'mitema-parent' ],
        wp_get_theme()->get( 'Version' )
    );
}

El truco está en que el child dependa del parent (tercer argumento), garantizando que el CSS del parent se cargue primero y el del child lo sobrescriba.

Sobrescribir plantillas

WordPress busca los templates primero en el child theme y, si no los encuentra, los toma del padre. Esto significa que para personalizar una plantilla solo tienes que copiarla del padre al child y modificarla ahí. Por ejemplo, si quieres cambiar cómo se ven los posts individuales, copia single.php del padre a mitema-child/single.php y edítalo.

Lo mismo aplica a partes reutilizables como header.php, footer.php o las plantillas de WooCommerce, y también a los templates del editor de bloques cuando trabajas con temas de bloque.

Activar el child theme

Entra al panel, ve a Apariencia → Temas y activa Mi Tema Child. Si el tema padre tenía opciones configuradas (logo, widgets, menús), tendrás que reconfigurarlas porque los ajustes se asocian al tema activo. Por eso conviene crear el child antes de empezar a personalizar.

Buenas prácticas

Agrega una miniatura llamada screenshot.png para que el tema se vea decente en la lista. Limita el child a diferencias reales: cada archivo que copias es un archivo más que tendrás que mantener. Y si usas un framework como Genesis o un constructor visual, revisa su documentación: algunos requieren configuraciones adicionales en el child.