En este tutorial vemos uno de los dos tipos de plantillas de WordPress: Los archivos de plantilla, que se organizan a través de nomenclatura jerárquica.
Plantillas en WordPress
Antes de nada, vamos a aclarar un concepto, y es que WordPress viene del mundo americano, dónde usan una terminología un poco distinta, que aquí puede causar confusiones.
Cuando en este artículo hablo de plantillas, no me refiero a themes (temas), o sea los temas que se pueden cambiar en el menú "Apariencia", sino a las plantillas dentro cada tema. Básicamente en los themes, hay dos tipos de plantilla:
- Archivos de plantilla, que trato en este tutorial
- Plantillas de páginas, que trataré en el tutorial de mañana
Los archivos de plantilla son aquellos que afectan a cualquier URL de nuestro WordPress en función del tipo de información que estamos viendo. Así pues, pueden afectar (entre otras) a:
- Posts
- Páginas
- Categorías
- Etiquetas
- Archivos por fechas
- Página inicial
- Página del blog
- Páginas de comentarios
- Subpáginas
- Etc.
Estas plantillas se asignaran automáticamente, por el mero hecho de la propia naturaleza de esa información. Así pues, no tenemos que ir a ningún sitio a indicarle qué plantilla usar, sino que WordPress ya se lo asignará de forma automática. Lo vemos en un momento.

Esquema simplificado de los archivos de plantilla
Por otra parte, tenemos las plantillas de página. Esto hace referencia únicamente a las plantillas que algunos temas tienen disponibles para ser elegidas de un desplegable cuando un editor o administrador de al web crea una "página" en WordPress. Lo vemos mañana.
Dicho esto, vamos a centrarnos ahora en las primeras.
Archivos de plantilla (File Templates)
Los archivos de plantilla son ni más ni menos que un archivo PHP que suele encontrarse en la carpeta raíz del tema o en ocasiones en el directorio /templates/ del theme (aunque puede encontrarse en otra carpeta) que indica qué aspecto debe tener cada tipo de vista en nuestro WordPress.
Por ejemplo, imaginemos que queremos modificar el aspecto de TODOS nuestros posts, cambiando el tamaño del título de los mismos. O el color de fondo de la página. O eliminando la fecha de publicación. Da igual, lo que queráis. Bien, pues eso lo podemos hacer de una forma centralizada modificando un solo archivo. El archivo single.php.
¿Y qué pasa si queremos hacer lo mismo con las páginas? O sea, modificarlas todas para que no tengan la fecha ni el autor, por ejemplo. Bueno, pues eso lo haremos modificando el archivo page.php.
¿Que queréis modificar ambos a la vez? Ningún problema, tenemos el archivo de plantilla singular.php, que sirve para ambos a la vez.
Supongo que ya habéis pillado el truquillo y no os sorprenderéis si os digo que el archivo category.php controla la plantilla de las páginas de categorías, el archivo tag.php las páginas de etiquetas, o incluso author.php para la página de autores.
Así pues... ¿Cuántos tipos de archivos de plantilla hay? Ui, pues cientos de ellas. Pero más que memorizar un listado, lo más cómodo es que os imprimáis este gráfico:

Aquí podemos ver un esquema de la jerarquía de los archivos de plantilla. Click para ampliar.
Bien, pues ahí está la clasificación jerárquica de las plantillas. ¿Y a qué me refiero con eso de clasificación jerárquica? ¿Jerárquica en qué sentido? Bueno, muy simple. Esta jerarquía evita que colisionen dos archivos que se dirigen al mismo tipo de contenido.
Jerarquía de los archivos de plantilla en WordPress
Siguiendo con el ejemplo de antes, imaginemos que quiero modificar el aspecto de los posts, para que tenga un fondo de página de un color distinto que el resto de la web. Tal como hemos dicho, debería modificar el archivo single.php, ¿Verdad? Pero también he dicho que el archivo singular.php incluye tanto posts como páginas, ¿No?
¿Entonces a quién va a hacer caso WordPress, si ambos indican cosas contrarias? Bien, pues en este caso siempre ganará el archivo de plantilla más específico. En este caso single.php, pues es más específico que singular.php, que abarca más cosas.
¿Y tendríamos algo más concreto que single.php? ¡Por supuesto! Sería single-slug.php, dónde "slug" sería el slug de ese post en concreto. De hecho, la jerarquía funcionaría de este modo:
- Si existe el archivo single-{slug}.php, se usa éste. Sino existe...
- ...se usa el archivo single.php. Sino existe...
- ...se usa el archivo singular.php. Sino existe...
- ...se usa index.php.
Atención a un detalle. Fijémonos que digo "Si el archivo existe". Eso quiere decir que en realidad, todo eso es opcional. Si single.php no existe, ningún problema, se usará singular.php. I si no existe... index.php, que de hecho, es el único archivo de plantilla requerido. De hecho, un theme podría consistir sólo de un archivo index.php y un archivo style.css y nada más, ya que index.php es el último resorte, por decirlo así. Evidentemente, cuantos más archivos de plantilla tenga un tema, más rico será este, pues cada tipo de información (artículos, páginas, categorías, páginas de autor, etc.) se mostrará distinto, y con su propia personalidad.
Lo mismo pasa con las páginas, en las que la jerarquía es:
- Si existe el archivo page-{id}.php, se usa éste. Sino existe...
- ...se usa el archivo page-{slug}.php. Sino existe...
- ...se usa el archivo page.php. Sino existe...
- ...se usa el archivo singular.php. Sino existe...
- ...se usa index.php.
¿Las categorías? Lo mismo!
- Si existe el archivo category-{id}.php, se usa éste. Sino existe...
- ...se usa el archivo category-{slug}.php. Sino existe...
- ...se usa el archivo category.php. Sino existe...
- ...se usa el archivo archive.php. Sino existe...
- ...se usa index.php.
Fijémonos que en este caso, el paso anterior al uso de index.php es archive.php, que sería el equivalente a singular.php pero para vistas en las que en lugar de un sólo post, página o cualquier contenido, tenemos varios (categorías, etiquetas, página de autor, archivos por fechas, etc). Todos esos siempre muestran varios contenidos, no sólo uno. Pero en lugar de llamarlo "plural.php", le han llamado "archive.php" y listos.
Todo esto también es aplicable a los CPT (Custom Post Types), que son aquellos contenidos que añadimos a través de código, themes o plugins. Por ejemplo productos, testimonios, portfolios... en tal caso la estructura es:
- Si existe el archivo single-{custompostype}-{id}.php, se usa éste. Sino existe...
- ...se usa el archivo single-{custompostype}-{slug}.php. Sino existe...
- ...se usa el archivo single-{custompostype}.php. Sino existe...
- ...se usa el archivo single.php. Sino existe...
- ...se usa index.php.
Por cierto, si queréis saber cómo hacer vuestros propios CPT, echad un vistazo al Curso de Plugins para WordPress.
Bien, así pues, podemos disponer de todos estos archivos opcionales y muchos más, simplemente copiando index.php, cambiándole el nombre al que nos interese, y modificando el contenido a nuestro gusto.

Otro esquema de jerarquía de archivos
A lo largo de este artículo os he dejado varios esquemas de los archivos de plantilla que deberíais imprimir y colocar en la pared (o incluso como fondo de pantalla ;). Elegid la que prefiráis, o incluso echad un vistazo a esta versión interactiva con enlaces hacia el codex :)
Conclusión
El sistema de archivos de plantillas de WordPress es de lo mejor que hay. Simplemente copiando cualquier archivo existente (por ejemplo index.php) y cambiando su nombre a uno más concreto (por ejemplo page.php) ya lo tenemos listo para ser modificado directamente.
WordPress ya detectará que existe, WordPress ya detectará que tiene prioridad por ser más específico, WordPress ya detectará que alguien está mirando una página, y WordPress ya lo utilizará para mostrar la información. ¿Qué más queréis? ¿Un vídeo? Bueno, pues en ese caso echad un vistazo al curso de WordPress Intermedio, en el que veremos esto y mucho más :)