Desarrollo de child themes en Genesis: cómo personalizar y potenciar tu sitio web

Cómo crear un child theme para Genesis Framework de verdad: estructura de archivos, hooks y filtros para personalizar sin tocar el tema padre ni perder los cambios en cada actualización.

Un child theme es un tema que hereda todo de otro (el “padre”, en este caso Genesis Framework) y que solo contiene las diferencias: tus estilos, tus funciones, tus ajustes. La regla de oro es simple: nunca toques directamente los archivos de Genesis. Si lo haces, la próxima actualización del framework te borra todos los cambios sin avisar. Con un child theme, Genesis se actualiza tranquilamente y tus personalizaciones se quedan intactas porque viven en otro sitio.

La estructura mínima

Un child theme de Genesis necesita solo dos archivos para existir: style.css con una cabecera concreta, y functions.php.

/*
Theme Name: Mi Child Theme
Theme URI: https://tuweb.com
Description: Child theme personalizado para Genesis Framework
Author: Tu nombre
Template: genesis
Version: 1.0.0
*/

La línea que importa de verdad es Template: genesis — le dice a WordPress cuál es el tema padre. Sin eso, WordPress no sabe de quién hereda tu child theme.

En functions.php, lo primero es cargar los estilos del padre y luego los tuyos:

add_action( 'wp_enqueue_scripts', 'mi_child_theme_enqueue_scripts' );
function mi_child_theme_enqueue_scripts() {
    wp_enqueue_style( 'genesis-style', get_template_directory_uri() . '/style.css' );
    wp_enqueue_style( 'mi-child-theme', get_stylesheet_uri(), array( 'genesis-style' ) );
}

Personalizar el diseño

Todo lo que quieras cambiar visualmente va en el style.css del child theme, sobrescribiendo las clases que ya trae Genesis. Por ejemplo, para cambiar el ancho del contenido principal:

.site-inner {
    max-width: 1200px;
}

Genesis usa una convención de clases bastante consistente (.site-header, .site-inner, .content, .sidebar-primary…), así que en cuanto te familiarizas con ella, sobreescribir estilos es cuestión de inspeccionar el elemento y apuntar bien el selector.

Funcionalidades personalizadas: hooks y filtros

Aquí es donde Genesis se diferencia de un theme normal. En vez de editar plantillas PHP directamente, añades o quitas funcionalidad “enganchándote” a los puntos que Genesis ya expone. Por ejemplo, para quitar el widget de sidebar por defecto y meter el tuyo:

add_action( 'genesis_before_loop', 'mi_widget_personalizado', 5 );
function mi_widget_personalizado() {
    if ( is_active_sidebar( 'mi-zona-widgets' ) ) {
        dynamic_sidebar( 'mi-zona-widgets' );
    }
}

O para quitar algo que Genesis muestra por defecto, como el breadcrumb:

remove_action( 'genesis_before_loop', 'genesis_do_breadcrumbs' );

Este patrón de add_action/remove_action sobre los hooks de Genesis es el 90% del trabajo real al desarrollar un child theme — mucho más que escribir plantillas desde cero.

SEO

Genesis trae opciones de SEO integradas en el propio editor de entradas/páginas (título personalizado, meta descripción, noindex por elemento), sin depender de un plugin adicional para lo básico. Para necesidades más avanzadas (schema, sitemap, redirecciones) sigo prefiriendo un plugin dedicado encima, pero para un sitio sencillo lo integrado de Genesis suele ser suficiente.

Lo que no te cuenta nadie: mantenimiento a largo plazo

Aquí toca ser honesto. Genesis Framework lleva años sin grandes novedades, y cada vez lo recomiendo menos para proyectos nuevos — lo sigo usando y manteniendo en clientes que ya lo tienen, pero para un proyecto desde cero hoy miraría antes Roots Bedrock o directamente WordPress “clásico” sin depender de un framework de tema que ya no evoluciona al ritmo de antes. Un child theme bien hecho te protege de las actualizaciones del padre, pero no te protege de que el padre deje de recibir novedades.

Hablemos

¿Tienes un proyecto
en mente?

Cuéntame lo que necesitas. Te doy una opinión honesta — solo trabajo en lo que realmente tiene sentido para tu negocio.

Empecemos