En este tutorial vemos las diferencias entre los tipos de temas de WordPress: Themes, child themes, starter themes y framework themes.
Tipos de themes en WordPress
Parece que hay un poco de confusión entre los distintos tipos de themes (temas, plantillas) que hay en WordPress, y es normal. Normalmente se utiliza sólo la palabra "theme" sin especificar, y de ahí que los metamos todos en el mismo saco.
Así pues, vamos a ver las diferencias entre:
- Themes
- Parent themes
- Child themes
- Starter themes
- Framework themes
A pesar que todos son muy parecidos, hay ciertas cosas que debemos tener en cuenta en el momento en el que elegimos uno. Además, para más INRI, esta clasificación no es exclusiva. O sea, que puede haber themes que estén en varias categorías. Así que sin más dilación, ¡Empecemos!
Themes
Como veis, empezamos por lo más fácil. Los themes a palo seco, como tal. Un theme es un conjunto de archivos que le dan apariencia a nuestro WordPress. Como mínimo debe tener un archivo llamado style.css en el que hay la información del mismo (nombre, autor, licencia, etc.) y los estilos CSS (más sobre CSS en el Curso de CSS).
En resumen: Cualquier theme que no dependa de otro, se puede considerar theme "normal". Los únicos que no entrarían en esta clasificación, serían los "child themes", ya que dependen de otro.
Algo muy importante que siempre debéis tener en cuenta es que nunca deberíais modificar un theme. Los archivos que conforman un theme (.php, .css, .js, etc) deberían ser sagrados, ya que cada vez que un theme se actualiza, se pierden todos los cambios que hemos hecho.
La forma correcta de modificar un theme, es creando un child theme, como veremos a continuación. Ya que si modificamos un theme directamente, estamos renunciando todas sus futuras actualizaciones.
Parent themes
Así pues, ya hemos visto que los themes son de "mírame pero no me toques". Pasemos ahora a ver el concepto de los "parent themes", que es aún más fácil, tomad nota:
Un parent theme es cualquier theme al que se le haya hecho un child theme.
Sí, ya se que es obvio, pero es así. En el momento en el que creáis un child theme de un theme, ya es parent theme. Es como las personas. Una persona se convierte en padre (o madre) en el momento en el que tiene un hijo. Sigue siendo persona (theme), pero además es padre.
No hace falta que cambiemos nada en el theme en sí, sólo creando un child theme ya lo tenemos. O sea que más que depender del theme, depende de que alguien le "haga un hijo".
En principio por defecto todos los themes están preparados para tener child themes, pero algunos tienen ciertas funciones que los hacen estar más preparados. Una vez más, como los humanos.
Child themes
Pasamos ahora a ver los child themes, o sea, los themes hijo, las plantillas hijo. Llamadles como queráis, pero es lo mismo. ¿Qué son?
Un child theme es un theme que por defecto hereda todas las funcionalidades y estilos de otro theme (su parent).
Pero la gracia del child theme, es que aparte de heredar los estilos y funciones de su tema padre, puede añadir las suyas propias, que tienen prioridad.
Así pues, si el child theme no añadiera o cambiara nada, sería un clon del parent theme, todo idéntico. Pero en el momento en el que añade un estilo o función, esta sobrescribirá a la de su parent theme.
Por ejemplo:
- Si tenemos un theme con los enlaces azules, y los queremos verdes, le creamos un child theme (convirtiéndolo en parent), y añadimos esa línea en el archivo style.css del child theme.
- Si tenemos un theme sin pie de página y lo queremos añadir, le creamos un child theme (convirtiéndolo en parent), creamos nuestra propia versión del archivo footer.php y la añadimos en el child theme.
Crear un child theme es extraordinariamente fácil y rápido. Si estáis suscritos a los cursos lo podéis ver en la clase #9. Crear child themes del Curso de WordPress Intermedio.
Así pues, tanto los estilos como las funciones creadas en el child theme tendrán prioridad y anularan a las del parent theme. Y las funciones que no se mencionen, seguirán siendo las del parent.
Esta es la mejor forma de modificar el comportamiento de un theme, ya que ahora nuestros cambios permanecerán siempre, aunque actualizaremos el parent theme. Claro, fijémonos que lo que actualizamos es el parent theme, no el child, ya que el child lo creamos nosotros. ¡Nosotros somos los desarrolladores! O sea que nosotros somos los que lo actualizamos día a día, por así decirlo, creando los estilos y funciones que queremos modificar.
O sea que esta es la idea: En el momento en el que creamos un child theme, este ya se independiza, y va a la suya, sin depender de nadie más del que lo ha creado. Moraleja: Si creas un hijo: Encárgate de él.
Importante: Un child theme no puede tener child themes. No se puede crear el child theme de un child theme, no existen los "grandchild" themes, vaya. Sólo se permite un nivel, por así decirlo. Con lo que un child theme no puede ser parent theme y un parent theme no puede ser child theme.
Starter themes
Vamos ahora a por otra categoría o clasificación. Un starter theme. Esto es un poquito más avanzado y suelen usarlo sólo los desarrolladores, pero el concepto lo entenderéis rápidamente.
Un starter theme es un theme que se usa de base. Normalmente los desarrolladores de themes, siempre usan un starter theme para desarrollar sus propios themes.
Para entendernos, un starter theme es un theme con lo mínimo de lo mínimo. Suele venir sin estilos, y con la mínima funcionalidad. Pero muy útiles, ya que nos ahorran tener que empezar de cero cada vez.
Imaginemos que eres un desarrollador y siempre creas themes con estas funcionalidades:
- Encabezado
- Contenido con sidebar
- Pie de página
- Compatibilidad con WooCommerce
- 2 menús de navegación
Si siempre que creas un theme, partes de esos básicos, al final (por sentido común), acabarás creando un theme base, o sea, un starter theme para ti. Y empezarás a crear cada nuevo theme encima de ese.
Pero ojo, porque no todos los desarrolladores crean sus propios starter themes. De hecho, la gran mayoría usan starter themes muy conocidos, creados y mantenidos por terceros. Por ejemplo, Underscores es un starter theme muy usado, ya que lo desarrolla y mantiene WordPress. Es open source, y siempre está a la última.
Es importante entender que en el momento en el que empiezas a crear un theme a partir de un starter theme, este ya se desvincula completamente del mismo. O sea, que ya tiene "vida propia", y nunca más dependerá del starter theme, puesto que éste ya no existe como tal.
De hecho, cuando creas un theme a partir de Underscores, lo primero que te pide es el nombre que le vas a dar, y en lugar de ver "Underscores", ya ves el nombre de tu theme: El starter theme como entidad en sí, desaparece.
De ahí podríamos decir que los themes basados en un starter theme "no se actualizan " como tal. Por ejemplo, imaginémonos que creamos un theme a partir de Underscores 1.0, al que llamamos Supertheme. Si algún día Underscores se actualiza a 1.5, eso no afectará a nuestro Supertheme, ya que nuestro theme ya "va a su rollo", independientemente de su origen.
A diferencia de los child themes, que siempre van ligados y son dependientes de sus parent themes, los themes creados a partir de un starter theme, se desvinculan de ellos en el momento de su creación.
Así que eso es un starter theme. Un theme que tu decides usar para no empezar desde cero, para aprovechar una base. Pero nada más. Es como si lo hubieras hecho de cero. El starter theme original muere en el momento en el que se usa.
Otra opción sería usar un starter theme como parent theme. ¿Se puede? Sí, por supuesto, pero no es lo más habitual. En esos casos, no se estaría usando como starter theme, sino como parent theme normal. Pero funcionaría perfectamente.
Framework themes
Y llegamos a la ultima tipología, los framework themes. Estos son un mundo aparte. La idea detrás de un framework theme es crear una nueva capa de funcionalidades y librerías por encima de WordPress.
Ciertamente, eso lo hace cualquier theme, pero los framework themes están pensados y optimizados para ser parent themes, ya que crean una nueva capa de abstracción en la que el resto de desarrolladores pueden trabajar.
A la práctica, se comportan como un parent theme. O sea, que no deberíamos tenerlos activados como tal, sino siempre crearles un child theme y trabajar con esos. De hecho, a nivel teórico no hay ninguna diferencia con un parent theme.
Pero a la práctica, es mucho más que eso. Un framework theme sería un "súper parent theme" que dota a todos sus hijos de funcionalidades estupendas.
Por ejemplo, veamos uno de los framework themes más usados del mundo: Genesis. Personalmente, es el que yo uso en todos y cada uno de mis proyectos. Tengo un tutorial llamado ¿Por qué Genesis es tan bueno?, y allí me explayo más en detalle, pero a nivel de resumen, podemos decir que Genesis incorpora, entre otras cosas:
- Ligereza: Genesis está extremadamente bien programado. El código es ligero y está optimizado, y da los mejores resultados de PageSpeed.
- Calidad: Usa HTML5, CSS3, y Schema, lo que ayuda mucho a Google a indexar mejor gracias a los microformatos. Incluso Matt Cutts, el director del Search Quality Team de Google, lo usa en su web personal.
- Accesibilidad: Cumple todos los criterios de accesibilidad para personas con problemas de vista. No podemos decir lo mismo de la gran mayoría de themes que hay por ahí.
- Adaptabilidad: No hace falta ni mencionar que es responsive, y que se adapta a todos los dispositivos. Esta es una condición imprescindible hoy en día, en el que ya se conecta más gente a Internet a través de dispositivos móviles que a través de ordenadores.
- Comunidad: Genesis es el framework de WordPress más utilizado. Eso hace que haya una gran comunidad de desarrolladores detrás, y hace mucho más fácil encontrar respuestas en foros, blogs y redes sociales, ante cualquier duda que podáis tener.
Y eso es sólo el principio, pero hay mucho más como podéis ver en ese otro tutorial. De hecho, incluso tengo un curso entero de cómo crear child themes para Genesis desde cero, y ahí lo podréis ver mucho mejor.
Usar framework themes tiene un montón de beneficios, como podemos ver, pero hay un detalle que deberemos tener siempre en cuenta: Los child themes que usemos, si los modificamos, debemos tratarlos como "starter themes".
OK, ya lo sé, ahora es cuando se os cruzan los cables, y os explota el cerebro, después de 1.800 palabras de tutorial. ¿Perdona Joan? ¿Cómo dices? Ya me he perdido.
Tranquilos, repasemos lo que hemos dicho antes, así llegaréis a la misma conclusión:
- No se trabaja con un framework theme, sino con sus child themes.
- Un child theme no puede tener child themes a su vez.
Ahora imaginemos que instaláis Genesis y un child theme, que modificáis según vuestro criterio.
Si Genesis laza una actualización, ningún problema, lo actualizáis y listos. Pero si se actualiza el child theme, y vosotros lo habéis modificado, ese no lo podéis actualizar. De hecho, ni siquiera os aparecerá el aviso de actualización, ya que en el momento en el que lo habéis "tocado", ya pasa a ser vuestro propio theme y se desvincula de su origen, como ocurre con los starter themes.
¿Esto es bueno? ¿Es malo? ¿Y qué hacemos si lo queremos actualizar?
Bien, para empezar, los child themes de un framework no suelen actualizarse, ya que normalmente no tienen (o no deberían tener) funcionalidades, sólo estilos. Las funcionalidades recaen al framework theme, no al child. El child sería como la ropa que le pones a alguien. No debería alterar la altura de una persona, hacerle ser más listo, o saber kung Fu.
Pero por otro lado, esto exactamente lo que nos ocurre con los starter themes. Por supuesto que Underscores evoluciona, y que el de 2010 va a ser distinto del de 2020. Pero nosotros nos vamos a quedar con la versión del día en el que lo creamos.
Es como si hacemos pasteles, y en lugar de hacer la mezcla de harinas nosotros desde cero, compramos una mezcla especial para repostería. Nosotros hacemos nuestro pastel con esa mezcla, y aunque la marca un día decida añadir o quitar ingredientes, nosotros ya tenemos el pastel hecho. No hay quien lo cambie.
Bien, pues un framework theme es un camino intermedio, ya que te permite lo mejor de los dos mundos. Por un lado, tenemos un núcleo básico y potente siempre actualizado (el framework), y luego una capa de pintura y estilo (el child theme) que podemos adaptar como queramos, pero que sabemos que no podremos actualizar.
Siguiendo el ejemplo del pastel, es como si por arte de magia, si la empresa de harinas cambia un ingrediente de la mezcla para que todo sea más esponjoso, de repente tu pastel ya habías hecho con la mezcla antigua, se modificara mágicamente y estuviera hecho con la nueva mezcla. ¿Genial, verdad? En cambio, el "child theme", que sería la cobertura de chocolate que le has puesto, o la decoración encima, sigue siendo la misma, no se actualiza.
Bien, pues esto es, en definitiva, un framework theme. Un núcleo duro potente y actualizado en el que le podemos montar el estilo que queramos. Con, o sin chocolate.
Resumen y conclusión
Se que ha sido un tutorial largo y un poco denso, pero estoy seguro que os habrá aclarado algunos conceptos.
En resumen podemos decir que los themes por defecto son "normales" hasta que se les crea un "child theme", y eso les convierte en "parent themes", entre los cuales hay los "framework themes" que son como unos super parent themes. Y cualquiera de ellos puede convertirse en un starter theme, si lo modificamos directamente.
Este último párrafo es un resumen muy pobre, que sin el contexto de las dos mil palabras anteriores es muy discutible. O sea que no os lo toméis a rajatabla ;)
Y como siempre, ya lo sabéis. Si queréis aprender más sobre creación de themes, de child themes, de starter themes, de framework themes y mucho, mucho más, echad un vistazo a los cursos de programación y desarrollo WordPress. Ya lo sabéis. Más de 6332 videos a vuestra disposición, todos los cursos en una tarifa plana.
¡Nos vemos en el siguiente tutorial! :)