Cómo Crear un Child Theme en WordPress desde Cero (y Por Qué Es Fundamental)
Si alguna vez has personalizado un theme de WordPress directamente y luego has perdido todos tus cambios al actualizarlo, este artículo es para ti. Hoy vamos a ver cómo crear un child theme desde cero y entender por qué es una práctica esencial en el desarrollo con WordPress.
¿Qué es un Child Theme y por qué lo necesitas?
Un child theme (tema hijo) es un tema que hereda toda la funcionalidad y estilos de otro tema, llamado parent theme (tema padre). La gran ventaja es que puedes hacer todas las modificaciones que quieras en el child theme sin tocar ni una línea del tema padre.
¿Por qué es tan importante?
Imagina que has pasado horas personalizando el CSS de tu theme, modificando plantillas y ajustando funciones. Llega una actualización del theme con mejoras de seguridad o nuevas características, la instalas y… boom. Todas tus personalizaciones desaparecen. Esto pasa porque la actualización sobrescribe los archivos que modificaste.
Con un child theme, tus personalizaciones están seguras en archivos separados. El theme padre se actualiza sin problemas y tus cambios permanecen intactos.
Requisitos previos
Antes de empezar, necesitas:
- Acceso a los archivos de tu WordPress (vía FTP, cPanel o administrador de archivos)
- Un theme padre instalado (usaremos Twenty Twenty-Four como ejemplo)
- Conocimientos básicos de CSS y PHP (aunque no te preocupes, lo explicaré paso a paso)
Paso 1: Crear la estructura de carpetas
Lo primero es crear una carpeta para tu child theme. Conecta a tu servidor y navega hasta:
/wp-content/themes/
Crea una nueva carpeta. El nombre debe ser descriptivo y sin espacios. Por ejemplo, si tu theme padre es «twentytwentyfour», puedes llamarlo:
twentytwentyfour-child
Paso 2: Crear el archivo style.css
Dentro de la carpeta de tu child theme, crea un archivo llamado style.css. Este es el único archivo obligatorio para que WordPress reconozca tu child theme.
Añade el siguiente código al inicio del archivo:
/*
Theme Name: Twenty Twenty-Four Child
Theme URI: https://tusitio.com/
Description: Child theme de Twenty Twenty-Four
Author: Tu Nombre
Author URI: https://tusitio.com
Template: twentytwentyfour
Version: 1.0.0
License: GNU General Public License v2 or later
License URI: http://www.gnu.org/licenses/gpl-2.0.html
Text Domain: twentytwentyfour-child
*/
Importante: La línea Template: debe coincidir exactamente con el nombre de la carpeta del theme padre. Este es el campo más crítico, ya que le dice a WordPress de qué theme heredar.
Paso 3: Crear el archivo functions.php
Ahora crea un archivo functions.php en la misma carpeta. Este archivo es crucial porque aquí le diremos a WordPress que cargue los estilos del theme padre correctamente.
Añade este código:
<?php
function child_theme_enqueue_styles() {
// Carga el style.css del theme padre
wp_enqueue_style('parent-style', get_template_directory_uri() . '/style.css');
// Carga el style.css del child theme
wp_enqueue_style('child-style',
get_stylesheet_directory_uri() . '/style.css',
array('parent-style'),
wp_get_theme()->get('Version')
);
}
add_action('wp_enqueue_scripts', 'child_theme_enqueue_styles');
?>
Este código hace dos cosas importantes: primero carga los estilos del theme padre y luego los del child theme, asegurando que tus personalizaciones tengan prioridad.
Paso 4: Activar tu Child Theme
Ve al panel de administración de WordPress, navega a Apariencia > Temas y deberías ver tu nuevo child theme listado. Haz clic en «Activar».
¡Felicidades! Ya tienes un child theme funcionando.
Personalizando tu Child Theme
Ahora viene lo divertido. Aquí es donde puedes empezar a personalizar sin miedo.
Añadir estilos personalizados
En tu style.css, debajo de la cabecera de comentarios, puedes añadir cualquier CSS personalizado:
/* Estilos personalizados */
body {
font-family: 'Montserrat', sans-serif;
}
.site-header {
background-color: #1a1a1a;
padding: 20px 0;
}
h1, h2, h3 {
color: #2c5282;
}
Estos estilos sobrescribirán los del theme padre gracias al orden de carga que establecimos en functions.php.
Modificar plantillas
Si necesitas cambiar cómo se muestra algo estructuralmente, puedes copiar archivos de plantilla del theme padre a tu child theme.
Por ejemplo, para modificar el header:
- Copia el archivo
header.phpde la carpeta del theme padre - Pégalo en la carpeta de tu child theme
- Modifícalo como necesites
WordPress usará automáticamente tu versión en lugar de la del padre.
Importante: Solo copia los archivos que realmente necesitas modificar. Cuantos menos archivos copies, más fácil será mantener tu sitio actualizado.
Añadir funciones personalizadas
El archivo functions.php de tu child theme es perfecto para añadir funcionalidad adicional. Por ejemplo:
// Añadir tamaños de imagen personalizados
add_image_size('custom-size', 800, 600, true);
// Registrar un área de widgets
function child_theme_widgets_init() {
register_sidebar(array(
'name' => 'Sidebar Personalizado',
'id' => 'custom-sidebar',
'before_widget' => '<div class="widget">',
'after_widget' => '</div>',
'before_title' => '<h3 class="widget-title">',
'after_title' => '</h3>',
));
}
add_action('widgets_init', 'child_theme_widgets_init');
// Cambiar el largo del excerpt
function custom_excerpt_length($length) {
return 30;
}
add_filter('excerpt_length', 'custom_excerpt_length');
Buenas prácticas y consejos
1. Nombra tus funciones de forma única
Añade un prefijo a todas tus funciones para evitar conflictos:
function michildtheme_custom_function() {
// tu código
}
2. Documenta tu código
Añade comentarios explicando qué hace cada sección. Tu yo del futuro te lo agradecerá:
// Desactiva el editor de bloques para posts
add_filter('use_block_editor_for_post', '__return_false');
3. No sobrescribas todo
Antes de copiar un archivo de plantilla, pregúntate si puedes lograr lo mismo con hooks y filters. Es más mantenible a largo plazo.
4. Mantén un registro de cambios
Crea un archivo CHANGELOG.md en tu child theme documentando las modificaciones que haces. Será invaluable cuando necesites recordar por qué hiciste algo hace seis meses.
5. Usa control de versiones
Si trabajas en proyectos serios, considera usar Git para tu child theme. Te permitirá revertir cambios si algo sale mal.
Estructura de archivos recomendada
Con el tiempo, tu child theme puede crecer. Una estructura organizada te ahorrará dolores de cabeza:
twentytwentyfour-child/
├── style.css
├── functions.php
├── screenshot.png (opcional, para mostrar una imagen del theme)
├── assets/
│ ├── css/
│ │ └── custom.css
│ ├── js/
│ │ └── custom.js
│ └── images/
├── template-parts/
│ └── content-custom.php
└── inc/
├── custom-functions.php
└── custom-hooks.php
Si sigues esta estructura, puedes cargar archivos adicionales desde functions.php:
// Cargar archivos CSS y JS adicionales
function child_theme_scripts() {
wp_enqueue_style('custom-css',
get_stylesheet_directory_uri() . '/assets/css/custom.css',
array('child-style')
);
wp_enqueue_script('custom-js',
get_stylesheet_directory_uri() . '/assets/js/custom.js',
array('jquery'),
'1.0.0',
true
);
}
add_action('wp_enqueue_scripts', 'child_theme_scripts');
// Incluir archivos de funciones adicionales
require_once get_stylesheet_directory() . '/inc/custom-functions.php';
require_once get_stylesheet_directory() . '/inc/custom-hooks.php';
Resolución de problemas comunes
Problema: El child theme no aparece en la lista de temas
Verifica que el campo Template: en style.css coincida exactamente con el nombre de la carpeta del theme padre.
Problema: Los estilos del padre no se cargan
Revisa que functions.php esté cargando correctamente el CSS del padre con wp_enqueue_style.
Problema: Aparece una pantalla blanca al activar el child theme
Probablemente hay un error de sintaxis en tu functions.php. Revisa que todas las etiquetas PHP estén correctamente abiertas y cerradas.
Problema: Los cambios no se reflejan en el sitio
Limpia la caché de WordPress, la caché del navegador y cualquier plugin de caché que tengas instalado.
Conclusión
Crear un child theme es una de las primeras cosas que deberías aprender al trabajar con WordPress. Te protege de perder trabajo, te da libertad total para personalizar y te mantiene alineado con las mejores prácticas de desarrollo.
Sí, requiere unos minutos de configuración inicial, pero ese tiempo se compensa con creces la primera vez que actualizas tu theme padre y todo sigue funcionando perfectamente.
La próxima vez que vayas a modificar un theme de WordPress, tómate esos cinco minutos para crear un child theme primero. Tu futuro yo te lo agradecerá.
¿Tienes alguna pregunta sobre child themes o has tenido alguna experiencia (buena o mala) trabajando con ellos? Me encantaría leerlo en los comentarios.
Recursos adicionales:
- Documentación oficial de WordPress sobre Child Themes
- Theme Handbook de WordPress
- Generador de Child Themes (para los que prefieren una herramienta visual)