Saltar al contenido
Referencia

Jerarquía de plantillas del tema de bloques de WordPress

La jerarquía completa de plantillas de los temas de bloques (FSE): para cada tipo de petición, la lista ordenada de plantillas que WordPress busca, de la más específica a la más general, con index.html como último recurso. El equivalente de la era de bloques al clásico diagrama de jerarquía.

Para cada solicitud, WordPress busca estas plantillas en orden —de la más específica a la más general— y se detiene en la primera que exista en la carpeta /templates de tu tema. La cadena siempre termina en index.html.

Portada

La portada del sitio, ya sea que muestre tus últimas entradas o una página estática.

  1. front-page.html
  2. home.html
  3. index.html

front-page.html tiene prioridad independientemente de la opción elegida en Ajustes → Lectura. Si la portada es una página estática y no existe front-page.html, se recurre a la cadena de página estática, no a home.html.

Índice de entradas del blog

La página que muestra tus últimas entradas (la «página de entradas» en Ajustes → Lectura).

  1. home.html
  2. index.html

Entrada individual

Una entrada individual del blog.

  1. single-post-{slug}.html
  2. single-post.html
  3. single.html
  4. singular.html
  5. index.html

Tipo de contenido personalizado individual

Una entrada individual de un tipo de contenido personalizado (por ejemplo, un «libro»).

  1. single-{post-type}-{slug}.html
  2. single-{post-type}.html
  3. single.html
  4. singular.html
  5. index.html

Para un tipo de contenido «book» con slug «dune»: single-book-dune.html, luego single-book.html y por último single.html.

Página estática

Una página normal de WordPress.

  1. page-{slug}.html
  2. page-{id}.html
  3. page.html
  4. singular.html
  5. index.html

Página con una plantilla personalizada

Una página a la que se le ha asignado una plantilla personalizada en el panel Plantilla del editor.

  1. {custom-template}.html
  2. page-{slug}.html
  3. page-{id}.html
  4. page.html
  5. singular.html
  6. index.html

Las plantillas personalizadas se declaran en el array customTemplates de theme.json y se ubican en /templates. La que se asigna tiene prioridad sobre toda la cadena de página.

Archivo de categoría

El archivo que muestra las entradas de una categoría.

  1. category-{slug}.html
  2. category-{id}.html
  3. category.html
  4. archive.html
  5. index.html

Archivo de etiqueta

El archivo que muestra las entradas con una etiqueta.

  1. tag-{slug}.html
  2. tag-{id}.html
  3. tag.html
  4. archive.html
  5. index.html

Archivo de taxonomía personalizada

El archivo de un término de una taxonomía personalizada.

  1. taxonomy-{taxonomy}-{term}.html
  2. taxonomy-{taxonomy}.html
  3. taxonomy.html
  4. archive.html
  5. index.html

Archivo de autor

El archivo de las entradas de un autor.

  1. author-{nicename}.html
  2. author-{id}.html
  3. author.html
  4. archive.html
  5. index.html

Archivo por fecha

Un archivo por año, mes o día.

  1. date.html
  2. archive.html
  3. index.html

Archivo de tipo de contenido

El índice de archivo de un tipo de contenido personalizado que tiene has_archive activado.

  1. archive-{post-type}.html
  2. archive.html
  3. index.html

Resultados de búsqueda

La página de resultados de una búsqueda en el sitio.

  1. search.html
  2. index.html

404 (no encontrado)

Se muestra cuando ningún contenido coincide con la URL.

  1. 404.html
  2. index.html

Página de adjunto

La página de un único archivo adjunto multimedia.

  1. attachment.html
  2. single.html
  3. singular.html
  4. index.html

Muchos sitios desactivan por completo las páginas de adjuntos (son contenido de poco valor). Si las mantienes, esta es la cadena.

Página de política de privacidad

La página establecida como política de privacidad del sitio en los Ajustes.

  1. page-privacy-policy.html
  2. privacy-policy.html
  3. page.html
  4. singular.html
  5. index.html

En qué se diferencia esto de la jerarquía clásica (PHP)

  • Las plantillas son archivos .html en /templates, no archivos .php en la raíz del tema. No existe single.php: es single.html.
  • Las regiones reutilizables (cabecera, pie de página) son PARTES de plantilla en /parts, referenciadas con el bloque wp:template-part, no con llamadas PHP get_header() / get_footer().
  • No hay cadena de get_template_part() ni get_header()/get_footer(). La composición se realiza con el bloque Parte de plantilla dentro de los archivos .html.
  • index.html es OBLIGATORIO. Un block theme sin templates/index.html no es un block theme válido: es el respaldo final obligatorio para cada ruta anterior.
  • Un tema se declara como block theme por la PRESENCIA de templates/index.html junto con un theme.json, no mediante ninguna marca en la cabecera.
  • Puedes editar cualquiera de estas plantillas en el Editor del sitio (Apariencia → Editor) y guardar los cambios en la base de datos, que entonces TIENEN PRIORIDAD sobre los archivos del tema hasta que borres la personalización. Esto sorprende a quienes depuran «¿por qué mi cambio de plantilla no hace nada?».