05. ¿Qué es y como crear un tema hijo en WordPress?
Cómo los temas hijo nos permiten personalizar un sitio web basado en WordPress mediante la creación de un nuevo tema que se crea a partir del trabajo realizado en un tema padre. Por qué son importantes los temas hijo. Cómo comenzar a construir el tema hijo. Los archivos y el código de ejemplo utilizado para la creación de temas hijo en este curso está disponible en GitHub: https://github.com/arsys-internet/Curso-Temas-de-WordPress
Todos los capítulos
01. ¿Qué son los temas de WordPress gratis y premium?
02. ¿Cómo elegir, instalar o borrar un tema de WordPress?
03. ¿Cómo se estructura y edita el código de un tema de WordPress?
04. Plantillas de WordPress: comprende la WordPress Template Hierarchy
05. ¿Qué es y como crear un tema hijo en WordPress?
06. Archivo functions.php de WordPress
07. ¿Cómo añadir y cambiar CSS en WordPress?
Información complementaria
-
Webinar: Protege tu marca en Internet
La digitalización de las empresas obliga a cuidar nuestra marca en Internet y protegerla de los ciberdelincuentes. Te mostraremos cómo evitar que tu marca sufra cualquier tipo de fraude.
-
Curso: WordPress - personalización con plugins
Si buscas crear un proyecto con WordPress único, este es tu curso. Te explicaremos cómo personalizar tu web mediante los plugins más populares.
-
Curso: WordPress Básico
Descubre los conocimientos básicos sobre la optimización en buscadores que necesitas para mejorar la relación con Google de tu sitio web.
¿Qué son los temas hijo de WordPress?
Los temas hijo (o child themes en inglés) de WordPress nos permiten contar un nuevo diseño para nuestra página web partiendo de un tema ya diseñado. Esta opción resulta extremadamente práctica para el desarrollo de una página web con este CMS y, por eso mismo, es una de las formas de trabajar más extendidas entre los desarrolladores, ya que sólo requiere algunos conocimientos básicos de HMTL, CSS y PHP.
Aunque WordPress tiene un completo sistema de administración de los temas para personalizar el diseño web, es más que habitual que nos basemos en otra plantilla previa, como las que se entregan de manera predeterminada al instalar el CMS, o cualquier otra que podamos adquirir. Generalmente, necesitaremos modificar los estilos para adaptarlos a nuestro proyecto y, en estos casos ,la mejor opción es crear un de estos denominados temas hijo.
La necesidad de uso de temas hijo se hace patente cuando el tema que hemos utilizado como base tiene una actualización disponible. Si procedemos a actualizarlo directamente y no hemos creado correctamente el tema hijo, es posible que perdamos todos los cambios que hemos ido incorporando. Sin embargo, si hemos creado correctamente el child theme evitaremos este contratiempo y la actualización del tema principal no machacará nuestros cambios.
¿Cómo crear el tema hijo de WordPress?
Para crear un tema hijo lo primero será crear una carpeta dentro de wp-content/themes/ Por ejemplo, para el tema padre twenty-eleven, crearíamos una carpeta llamada twenty-eleven-child.
Después crearemos un archivo .css con el nombre de style.css y dentro colocaremos las siguientes líneas:
/*
Theme Name: Twenty Eleven Child
Theme URI: http://example.com/twenty-eleven-child/
Description: Tema hijo de Twenty Eleven
Author: José María Baquero
Author URI: https://www.arsys.es/blog/author/jmbaquero/
Template: twentyeleven
Version: 1.0.0
Tags: light, dark, two-columns, right-sidebar, responsive-layout, accessibility-ready
Text Domain: twenty-eleven-child
*/
@import url("../twenty-eleven/style.css");
/* Aquí comienzan tus estilos personales */
El campo que se debe indicar de manera obligatoria es Theme Name. De esta forma, en la zona de administración de WordPress, aparecerá el nuevo tema hijo creado listo para seleccionar. Otros valores de esta configuración son:
- Theme URL: Nos pide la ruta de nuestra carpeta creada para el tema hijo.
- Description: Una breve descripción del tema creado.
- Author: El autor del tema hijo.
- Author URL: URL del autor.
- Template: Nombre de la carpeta donde se encuentra el tema padre.
- Version: Versión de nuestro tema hijo.
- Tags: Etiquetas para búsquedas, etc.
- Text Domain: Nombre de la carpeta creada para el tema hijo.
- @import: Nos permite importar los estilos del tema padre, aunque ahora veremos que es mejor hacerlo de otra forma.
La forma óptima de importar los estilos del tema padre será a través del archivo functions.php que crearemos en la carpeta del tema hijo. En este archivo utilizaremos la función wp_encueue_style(). Así conseguimos que los estilos del tema padre estén en la cola y que se utilicen en caso de ser necesarios.
El código de functions.php sería así:
wp_encueue_style('style.css',”http://mi-sitio.com/file/theme/twenty-eleven/style.css”);
Modificar los archivos de código PHP en los temas hijo de WordPress
Para cambiar más archivos de la plantilla padre tendremos que crear los archivos en la carpeta del tema hijo. Por ejemplo, para editar la cabecera de la plantilla, tendremos que crear el archivo header.php. Con esto, sobreescribimos el archivo equivalente de la plantilla padre.
También podemos crear archivos que no estén el tema padre. Por ejemplo, si nos interesa crear una plantilla para un sidebar especial que el padre no tiene, tan sólo tendríamos que crear el archivo sidebar-especial.php.
Debemos tener en cuenta que el archivo functions.php del padre y el del hijo funcionarán simultáneamente. Además se cargará antes el functions.php del tema hijo. Por ese motivo es habitual que los temas de WordPress, dentro de functions.php, pregunten antes si una función ya ha sido creada anteriormente, con un código como este:
if(!function_exists('theme_nav')){
function theme_nav(){
// hace lo que sea
}
}
Cuando veamos funciones que no estén envueltas en esta llamada a function_exists(), en el functions.php del tema padre, debemos entender que no se pueden sobrescribir, pues si lo hacemos tendremos un error PHP y las páginas no se generarán correctamente. También puede indicarnos que los creadores del tema que estamos modificando no habían pensado en la posibilidad que otros desarrolladores pudieran realizar temas hijos basados en ellos.