Nine Pebbles, de Edvard Alexander Rølvaag

Una de las preguntas clave que el usuario curioso de WordPress se hace alguna vez en su vida es la siguiente: ¿cómo hacen los temas para mostrar páginas diferentes dependiendo del contenido que estemos viendo?

La pregunta, además de totalmente lícita, es muy interesante. WordPress es capaz de identificar los diferentes contenidos a renderizar y según el tipo de contenido concreto que toque mostrar al visitante, utiliza una u otra plantilla diferente. Los temas para WordPress no son más que un compendio de plantillas concretas para cada contenido con su poquito de JavaScript para los elementos dinámicos y de CSS para los estilos y colorines.

Perfecto, pero… ¿cómo se hace el enlace entre las plantillas del tema y WordPress? Esto es lo que vamos a ir viendo paso a paso a lo largo de esta entrada.

Pero antes de empezar, la respuesta la tienes en la siguiente imagen:

Jerarquía de plantillas de WordPress
Jerarquía de plantillas de WordPress

Esta es la jerarquía de plantillas de WordPress. Puedes encontrar toda la información al respecto en el Codex de WordPress, la documentación oficial. Incluso puedes interactuar con esta jerarquía desde esta web tan molona.

Básicamente, WordPress utiliza una jerarquía de plantillas para renderizar los contenidos. Esto quiere decir que WordPress busca en el tema que tienes activo un archivo PHP concreto. Si existe, pinta el contenido usando ese archivo, al que llamamos plantilla. Si no existe, busca al siguiente más genérico dentro de la jerarquía. Si existe, lo usa. Y si no, sube por la jerarquía a por el siguiente más genérico. Y así todo el rato. Hasta que WordPress, si no encuentra el archivo de la plantilla en cuestión, utiliza el archivo index.php que es el más genérico de todos y que un tema ha de tener sí o sí.

Ahora sí, vamos a entrar en más detalle en la jerarquía de plantillas de algunos de los contenidos más habituales de WordPress.

Plantillas para páginas

Veamos las plantillas que WordPress utiliza para el renderizado de páginas y tipos de contenido sencillos.

Entradas y tipos de contenido personalizados

WordPress mira los siguientes archivos PHP de tu tema para renderizar una entrada de tu blog o un tipo de contenido personalizado (custom post type, en inglés):

  1. single-{post-type}-{slug}.php: si quieres tener una plantilla específica para una entrada concreta o un tipo de contenido concreto, has de crear este archivo PHP cuyo nombre incluye el tipo de contenido ({post-type}), que puede ser post o cualquier otra cosa (product, si usas WooCommerce). Y también ha de tener el slug o permalink, llámalo como quieras, en el nombre de la plantilla. Por ejemplo, si quisiera tener una plantilla específica para esta entrada que estás leyendo, tendría que crear el archivo single-post-introduccion-a-la-jerarquia-de-plantillas-de-wordpress.php.
  2. single-{post-type}.php: si en vez de un contenido concreto quiero afectar a todo el tipo de contenidos (a todas las entradas o todos los productos), utilizaremos esta plantilla, cuyo nombre sólo incluye el nombre del tipo de contenido.
  3. single.php: WordPress usa esta plantilla para renderizar cualquier contenido unitario (una entrada, un producto, etc; cualquier contenido que no sea un conjunto de contenidos).
  4. singular.php: esta es otra plantilla de nivel superior para renderizar contenidos unitarios de cualquier tipo.
  5. index.php: si no se ha encontrado nada de lo anterior, WordPress utiliza esta plantilla de forma genérica para renderizar tu contenido.

Recuerda que en el directorio de temas de WordPress tienes miles de ejemplos de temas para WordPress a tu disposición. Te recomiendo que te descargues algunos e intentes, como ejercicio de aprendizaje, ver los archivos PHP que contienen e identificar estas plantillas que te acabo de presentar.

Así podrás entender qué plantillas utiliza dentro de la jerarquía de plantillas de WordPress y ver qué contenido tiene cada una de estas plantillas. Sin duda, si quieres aprender sobre temas para WordPress esto es algo indispensable a hacer. Y además, ¡es gratis!

Páginas normales

Al igual que pasaba con las entradas y demás tipos de contenidos, para renderizar páginas WordPress utiliza una jerarquía de plantillas.

  1. Template seleccionada: si desde los atributos de página seleccionas una plantilla específica, esta siempre toma prioridad sobre todas las demás. Puedes aprender a crear plantillas personalizadas aquí.
  2. page-{slug}.php: si quieres que una página concreta tenga su propia plantilla, crea dicha plantilla en un archivo PHP que tenga el slug de la página donde aplica en el nombre.
  3. page-{id}.php: del mismo modo que utilizábamos el slug, también puedes usar directamente el ID de la página de WordPress donde se aplica la plantilla.
  4. page.php: esta plantilla aplica a todas las páginas de WordPress, a no ser que ya se haya aplicado alguna de las anteriores.
  5. singular.php: al igual que con las entradas, la plantilla singular sirve para todos los contenidos unitarios. Raramente se aplicará esta plantilla ya que la mayoría de temas incluyen una plantilla page.php.
  6. index.php: como siempre, esta es la plantilla por defecto en WordPress.

Vuelve a revisar ahora de nuevo el tema que descargaste antes (espero que lo hicieras) y verás que ahora entiendes un poco más los demás archivos que aparecen allí. Seguro que ahora puedes identificar los archivos PHP de plantillas de página.

Páginas especiales

En WordPress existen otras páginas especiales que también hacen uso de plantillas específicas para renderizarse. Un ejemplo de ello es la página principal de la web. Recuerda que la página principal la seleccionas en los Ajustes de WordPress, dentro del submenú Lectura. Para esa página se utiliza la siguiente jerarquía de plantillas:

  1. front-page.php: si usas una página estática como página principal en WordPress, primero se intentará aplicar la plantilla front-page.php.
  2. home.php: si no se encuentra la plantilla anterior, se buscará esta para tu página estática establecida como página principal. Esta plantilla también se usa si en vez de seleccionar una página estática como página principal tienes seleccionada la opción de mostrar tus últimas entradas ahí.
  3. index.php: de nuevo, la plantilla por defecto siempre está presente.

La página que muestra los resultados de búsqueda de tu WordPress también es una página especial que puede tener su propia plantilla. Para ello puedes utilizar la plantilla search.php. Si no la define tu tema, se usará index.php como siempre.

Por último, la página que se muestra cuando tu web devuelve un error 404 también se puede configurar con una plantilla concreta en WordPress. Tienes que crear el archivo 404.php en tu tema y entonces se aplicará esta plantilla.

Plantillas para archivos

Hasta ahora hemos visto plantillas para contenidos unitarios (excepto en el caso de los resultados de búsqueda). Pero en WordPress hay muchas páginas que se forman como un listado de contenidos: los archivos de WordPress. Veamos qué jerarquía de plantillas utilizamos en este caso.

Categorías y etiquetas

WordPress utiliza la siguiente jerarquía de plantillas para las categorías:

  1. category-{slug}.php: esta plantilla sirve para renderizar la lista de contenidos (habitualmente entradas) que pertenecen a una categoría concreta. ¿A cuál? Pues a la que tenga el mismo slug que tiene el nombre del archivo PHP de la categoría.
  2. category-{id}.php: si prefieres usar IDs de categoría en vez de slugs también puedes hacerlo. Por ejemplo, si quieres aplicar la plantilla a la categoría 13, crea el archivo de la plantilla con el nombre category-13.php.
  3. category.php: la plantilla por defecto para todas las categorías es esta.
  4. archive.php: esta es la plantilla más genérica para los archivos en WordPress.
  5. index.php: de nuevo, si no aplica ninguna plantilla más específica, WordPress siempre va a buscar esta.

Para las etiquetas se utiliza la siguiente jerarquía de plantillas:

  1. tag-{slug}.php: si la etiqueta se llama entrevista, podemos utilizar la plantilla tag-entrevista.php en caso de que queramos diseñar una plantilla específica para esa etiqueta en WordPress.
  2. tag-{id}.php: también podemos definir la plantilla a través del ID de la etiqueta.
  3. tag.php: al igual que pasaba con category.php, para etiquetas tenemos esta plantilla genérica.
  4. archive.php: de nuevo, se utilizará esta plantilla si ninguna de las anteriores existe.
  5. index.php: otra vez, aquí tenemos la plantilla por defecto.

Tipos de contenido y taxonomías personalizadas

Si tenemos tipos de contenido personalizados podemos utilizar la plantilla archive-{post_type}.php donde post_type es el slug del tipo de contenido personalizado. Esto mostrará la lista de contenidos de ese tipo.

En cuanto a taxonomías personalizadas, WordPress utiliza la siguiente jerarquía de plantillas:

  1. taxonomy-{taxonomy}-{term}.php: si tienes la taxonomía personalizada videojuegos en WordPress y quieres crear una plantilla con un diseño concreto para el término deportes dentro de esa taxonomía, tendrás que crear el archivo taxonomy-videojuegos-deportes.php para usar esa plantilla.
  2. taxonomy-{taxonomy}.php: si por el contrario quieres usar la misma plantilla para todos los términos de la taxonomía, simplemente usa taxonomy-videojuegos.php, en el ejemplo anterior.
  3. taxonomy.php: esta es la plantilla por defecto para todas las taxonomías.
  4. archive.php: si ninguna de las anteriores plantillas existe, se aplica esta.
  5. index.php: como siempre, esta plantilla está en la cima de la jerarquía de plantillas de WordPress

Con esto ya deberías tener todo lo necesario para crear e identificar plantillas en tus temas de WordPress.

Resumen final

Entender la jerarquía de plantillas de WordPress es clave para ser capaz de entender los temas e incluso desarrollar el tuyo propio. Nunca está de más echarle un ojo a esto y saber cómo funciona y así ganar confianza cuando nos ponemos a tocar el código PHP del tema que usamos en nuestro WordPress.

Existe alguna que otra plantilla más, pero se suelen usar menos. De todos modos, recuerda que siempre puedes ir a revisar la documentación del Codex de WordPress. Ahí encontrarás todo lo que no se explicó aquí.

¿Qué te ha parecido todo esto? ¿Sigues usando plantillas para tus contenidos en WordPress o ya montas todos los diseños con bloques? No te olvides de dejarme un comentario aquí abajo si has llegado hasta el final de la entrada. Me encantaría conocer cómo usas las plantillas de WordPress.

Imagen destacada de Edvard Alexander Rølvaag en Unsplash.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

He leído y acepto la política de privacidad de Nelio Software

Tus datos personales se almacenarán en SiteGround y serán usados por Nelio Software con el único objetivo de publicar tu comentario aquí. Con el envío de este comentario, nos das el consentimiento expreso para ello. Escríbenos para acceder, rectificar, limitar o eliminar tus datos personales.