Temas hijos en WordPress
Cuando tenemos un blog montado con WordPress, a pesar de la variedad de temas disponibles tanto en el repositorio oficial como en otros medios, al final siempre nos gusta hacerle una serie de modificaciones, ya sea para traducir algo o cambiar unos colores.
Sin embargo, si no creamos un tema hijo, sufrimos las consecuencias de las actualizaciones. Imaginemos, modificamos la hoja de estilos y el fichero single.php, WordPress nos avisa de que hay una actualización del tema, actualizamos y … se borró todo nuestro trabajo. A mí mismo me ha pasado. ¿Cómo solucionarlo? Con un tema hijo.
¿Qué es un tema hijo?
Un tema hijo es una herramienta que nos proporciona WordPress para crear un tema derivado de otro, de forma que con sólo una hoja de estilos diferente, podemos hacer las modificaciones que creamos convenientes, teniendo siempre la referencia al tema padre. De esta forma, nos beneficiamos de las posibles actualizaciones del padre, sin sufrir problemas como el que os acabo de comentar.
¿Cómo crear un tema hijo?
Veamos un ejemplo para crear un tema hijo de Twenty Ten. En el directorio de los temas (/wp-content/themes), creamos un directorio llamado “twentyten-hijo” y dentro de él una hoja de estilos que tenga el siguiente contenido:
/* Theme Name: Twenty Ten Child Theme URI: http: //example.com/ Description: Child theme for the Twenty Ten theme Author: Your name here Author URI: http: //example.com/about/ Template: twentyten Version: 0.1.0 */ @import url("../twentyten/style.css");
Con sólo hacer esto tendremos ya el tema hijo disponible, podremos activarlo desde el panel de administración de WordPress y trabajar sobre él.
¿Cómo trabajar sobre el tema hijo?
Los temas hijos tienen sus particularidades de uso. A pesar de lo que pueda parecer, estos mecanismos que aquí describo tienen su razón de ser para evitar posibles incompatibilidades.
- La hoja de estilos se sobreescribe, por lo que debemos importarla desde la nueva, para conservar la antigua. Podemos incluir más reglas de estilos en la nueva.
- El fichero functions.php es llamado dos veces: para el padre y para el hijo. Esto nos obliga a no poder declarar funciones que ya existan en el padre, a no ser que éstas sean del tipo pluggable (es decir, que en el padre se compruebe si la función existe antes de declararla).
- El resto de ficheros se sobreescribe. Si existe un fichero sidebar.php en el hijo, se ignora el del padre, si no existe en el hijo, se carga en el padre.
Como veis, teniendo en cuenta estas tres reglas, sin incompatibilidad ninguna, podemos aprovechar los temas ya creados, modificarlos y tener siempre las ventajas de las actualizaciones, sin perder nuestro trabajo.