Lunes, 28 Abril 2014 00:00

Crear temas hijo (child themes) en WordPress

Escrito por 
CMS:  WordPress |  Versión:  Todas |  Nivel de dificultad:  Básico |  Tiempo estimado de lectura:  15 minutos


Crear temas hijo (child themes) en WordPressA medida que se profundiza en el uso de WordPress nuevas posibilidades se abren ante nosotros con el fin de llevar un punto más allá el Blog de WordPress, la Tienda con WooCommerce o la página de Empresa realizada con este estupendo CMS.

Lo malo de la personalización de temas en WordPress es que en muchas ocasiones nos lanzamos a realizar cambios en el tema activo (tema padre) sin plantearnos que futuramente este tema recibirá actualizaciones (si es un tema comercial o nativo de WordPress) y estas actualizaciones pueden eliminar las personalizaciones realizadas durante mucho tiempo.

Esto lo podemos resolver creando un tema hijo o "child theme" que permita importar por un lado los estilos del tema activo (padre) y además añadir archivos (copia) del tema activo al tema hijo para modificarlos y personalizarlos según las necesidades del proyecto web.

¿Como crear un tema hijo?

En la carpeta de Temas de WordPress /wp-content/themes creamos la carpeta deseada para el tema hijo basada en el tema en uso. Si por ejemplo el tema en uso se llama "yoo_balance_wp" el tema hijo lo podemos llamar "child_yoo_balance_wp".



En la carpeta "child_yoo_balance_wp" creamos un archivo CSS para gestionar los estilos llamado style.css y le añadimos el siguiente código:

/*
   Theme Name: Child Yoo Balance
   Theme URI: http://www.yootheme.com/themes/
   Version: 1
   Description: Child Theme. Parent Theme YOO Balance WordPress
   Author: Webempresa
   Author URI: https://www.webempresa.com
   Template: yoo_balance_wp
*/
@import url("../yoo_balance_wp/style.css");


Verificar que se pone el nombre correcto de la carpeta del tema padre.

Accedemos al dashboard, Apariencia, Temas y activamos el tema "hijo" nuevo.



Una vez activado el tema-hijo (child theme) si accedes al frontal de la web verás que no se observan cambios pues apenas lo que hemos hecho ha sido crear la estructura para que nuevos cambios en el Tema activo se realicen a partir de ahora en una "copia" u "override" del archivo original del tema, permitiendo que el tema "padre" o "activo" , cuando reciba nuevas actualizaciones no pierda los cambios que hayamos realizado en archivos como functions.php u otros (css, etc.) ya que estaremos realizando los cambios a partir de ahora en el tema hijo (child theme).

¿Que ventajas tiene trabajar con temas hijo?

  • Te permite realizar personalizaciones de las hojas de estilos CSS del tema (el archivo style.css si invalida el original del tema activo, por eso se importa con @import).
  • Cualquier archivo del tema activo que necesitemos modificar, por ejemplo: footer.php porque queremos realizar cambios en el pie de página, el copyright o personalizaciones, podremos copiarlo a la carpeta creada y realizar en la copia los cambios deseados.
  • Crear un nuevo archivo functions.php para añadir código de plugins nuevos o personalizaciones para el tema. (Este archivo no invalida el archivo principal functions.php del tema activo).
  • WordPress da prioridad en la carga siempre al tema hijo y en el caso del archivo functions.php no requiere una copia o importación del archivo del tema activo (padre) por lo que las modificaciones o añadidos a functions.php en el child theme tendrán prioridad.
  • Si realizamos cambios que afectan a la estética del sitio web, simplemente renombrando, eliminando o comentando los cambios del archivo afectado del tema hijo, recuperaremos el estado anterior a los cambios.

En el siguiente vídeo ilustramos el proceso de creación de un tema hijo.



La gran ventaja de trabajar con temas hijo (child theme) es que los cambios que se realizan no se pierden tras las actualizaciones del tema activo.



¿Te ha resultado interesante este artículo?

Suscríbete para recibir consejos exclusivos para WordPress, Joomla y PrestaShop



Luis Méndez Alejo

Miembro del equipo técnico de Webempresa.
Coordinador de contenidos en el Blog y en Youtube.
Google+