Gestión

Gestión del tipo de contenido "Libros", con taxonomías y campos personalizados

En los dos artículos anteriores de esta serie, Sitios educativos fechos al taxonómico modo 1 y Sitios educativos fechos al taxonómico modo 2, he mostrado las características esenciales de un sitio web de reseñas y comentarios de obras literarias, elaborado en WordPress por medio de taxonomías, tipos de contenido y campos personalizados, y asimismo he explicado las posibilidades de los plugins Custom Post Type UI y Advanced Custom Fields para definir, organizar y nutrir de contenido un sitio web de tales características.

No quiero asustar a mis lectores, pero lo cierto es que en esos dos artículos he descrito la parte fácil del proceso. En efecto, la traslación del contenido del sitio a la pantalla –es decir, la representación de los artículos correspondientes al tipo de contenido “libros”, que van acompañados por las etiquetas asociadas a tres taxonomías personalizadas y la información procedente de cinco campos personalizados- resulta una tarea bastante complicada, ya que requiere una laboriosa edición de los ficheros que forman parte del tema elegido para el blog. Para que los docentes interesados en este proyecto no tengan que pasar por los mismos suplicios que un servidor –cuyas habilidades como programador en PHP, ya lo he dicho más de una vez, tienden a cero- describiré a continuación los pasos que he seguido para crear un tema de WordPress que me permitiera representar la estructura de contenido del sitio.

1. La conveniencia de crear un tema hijo.

Según el Codex de WordPress, “un tema hijo es un tema que hereda la funcionalidad de otro tema, denominado tema padre, y que permite modificar, o añadir, la funcionalidad de dicho tema” (la traducción es mía). La gran ventaja de los temas hijo es que requieren un trabajo relativamente pequeño de desarrollo, pues toda su estructura y su presentación vienen dadas por aquel en el que están basados. Por otro lado, cuando el tema padre se actualiza, los cambios hechos en el tema hijo no se pierden, dado que este aprovecha las funcionalidades que haya aportado la nueva versión de aquel. En consecuencia, un tema hijo es una herramienta de gran utilidad para proyectos basados en el añejo método de la prueba y el error (al que, si he de ser sincero, debe su existencia el sitio Comentarios y reseñas de libros), ya que los posibles desastres siempre se pueden eliminar borrando el tema hijo, volviendo al tema padre y recomenzando, si es necesario, desde cero. 

No voy a explicar aquí cómo se crea y se instala un tema hijo, pues en la Red es fácil encontrar tutoriales sobre el particular. Por citar solo tres ejemplos, véanse artículos como Temas hijo: cómo hacer modificaciones sencillas en un tema de WordPress, Crear un tema hijo de WordPress o How to Create a WordPress Child Theme (Video). En cambio, me extenderé en detallar los ficheros de que consta el tema hijo del sitio Comentarios y reseñas de libros, basado en el tema-padre Twenty Ten. He escogido este tema porque está muy bien estructurado y es relativamente fácil de comprender; además, al tratarse del tema por defecto de la versión 3.0 de WordPress, ha sido exhaustivamente utilizado para ilustrar muchas tareas de transformación y adaptación, con lo cual la documentación y los ejemplos disponibles para trabajar con él son fáciles de encontrar.

Una advertencia previa: para no aburrir a mis lectores habituales, no voy a incluir a continuación ningún ejemplo de código. Quienes tengan interés en conocer las interioridades del sitio, pueden descargar el ZIP que aparece al final de este artículo, en el que se incluyen todos los ficheros del tema hijo elaborado para el proyecto; si editan dichos ficheros, podrán ver los comentarios e indicaciones que ayudan a entender su funcionamiento. En el ZIP también he incluido la copia de un documento publicado en Google Docs en el que constan todos los ficheros del tema hijo, sus relaciones con el tema padre, y las funciones que desempeñan en la construcción del sitio.

2. Los ficheros del tema hijo.

2.1. Ficheros style.css y screenshot.png.

El fichero style.css contiene en su cabecera la identificación y descripción del tema hijo, y las debidas referencias al tema padre, amén de unos cuantos estilos CSS que sirven para representar los distintos elementos de la página correspondiente a un comentario o reseña de libro, lo cual se logra mediante cajas de diferente color (beige, rosa, azul, verde y gris), tal como puede verse, por ejemplo, en la reseña de Los mares grises sueñan con mi muerte; el campo personalizado de ficha editorial, cuenta con un estilo adicional, encargado de presentar la información mediante una sangría francesa. Por su parte, el fichero screenshot.png es el mismo del tema padre Twenty Ten.

2.2. Ficheros archive-libros.php y loop-archive.libros.php.

Estos dos ficheros sirven para generar la página de archivo o índice mediante la cual se presenta el listado de artículos correspondiente al tipo de contenido “libros”. En WordPress no es difícil conseguir este tipo de listados, pues, de acuerdo con la jerarquía de plantillas, basta con tomar el fichero archive.php del tema padre, renombrarlo como archive-{post_type}.php (en el caso que nos ocupa, archive-libros.php) y llevar a cabo sobre él las modificaciones necesarias. Naturalmente, esto es la teoría, porque en la práctica el invento es algo más complicado, ya que las últimas líneas del fichero archive.php del tema Twenty Ten invocan el fichero loop.php, que es el que contiene el celebérrimo loop o bucle encargado de llamar a todas las entradas o artículos uno tras otro y mostrarlos en pantalla. Es necesario, entonces, construir un fichero de bucle especializado que se encargue de mostrar el bucle singular correspondiente al tipo “libros”. Y esa es justamente la tarea que realiza el fichero loop-archive.libros.php, cuyo bucle muestra el resumen o extracto de los artículos del tipo “libros”, precedido por una miniatura de 100×100 píxels, alineada a la izquierda.

2.3. Ficheros single-libros.php y loop-single-libros.php.

La función de estos ficheros es la de presentar las páginas individuales correspondientes a cada uno de los artículos del tipo de contenido “libros” (véanse, a modo de ejemplos, las páginas El sitio de Krishnapur y Los mares grises sueñan con mi muerte). De nuevo, es relativamente fácil construir en un tema de WordPress un fichero de plantilla de página individual para un artículo perteneciente a un tipo de contenido personalizado, pues la ya mencionada jerarquía de plantillas establece que tal objetivo se puede conseguir mediante un fichero denominado single-{post_type}.php (en nuestro caso, single-libros.php), para cuya elaboración basta con tomar como modelo el fichero single.php del tema.

Al igual que en el caso anterior, al final del fichero single-libros.php hay una llamada a loop-single-libros.php, que es la pieza del sistema realmente encargada de aportar los elementos específicos de esta plantilla, a saber:

  • El contenido de los tres primeros campos personalizados.
  • Los términos o etiquetas asociados a las tres taxonomías personalizadas.
  • El contenido de los dos últimos campos personalizados.

2.4. Ficheros autores.php, generos.php y literaturas-nacionales.php.

Estos tres ficheros  están basados en la plantilla de página fija onecolumn-page.php del tema padre Twenty Ten, que ha sido modificada para adecuarla a las necesidades de las tres páginas fijas (autores, géneros literarios y literaturas nacionales) que deben listar los términos de las tres taxonomías personalizadas, con sus respectivas descripciones. El único cambio efectuado en cada una de las plantillas es una consulta personalizada para obtener el correspondiente listado de términos, junto con sus descripciones.

2.5. Ficheros taxonomy-autores.php, taxonomy-generos.php y taxonomy-literaturas-nacionales.php.

Estos tres ficheros se encargan de presentar cada uno de los términos o etiquetas de clasificación de las taxonomías personalizadas, junto con sus respectivas descripciones, como puede verse en páginas como J.G. Farrell, Cuento, o Literatura española. De acuerdo con la ya varias veces mencionada jerarquía de plantillas de WordPress, para obtener una plantilla que realice esa tarea, basta con denominarla taxonomy-{taxonomy}.php, y añadirle el código necesario. Dado que el tema Twenty Ten no cuenta con ningún fichero que pueda aprovecharse como base (aunque se podrían utilizar tanto el archive.php como el category.php), he seguido de cerca el artículo How To Build A Media Site On WordPress (Part 2), en el que se explica detalladamente su proceso de elaboración.

Los elementos esenciales de estos tres ficheros son los siguientes:

  • Se define una consulta personalizada para obtener los datos necesarios (los términos de la taxonomía).
  • Se añaden los campos del nombre del término y su descripción.
  • Finalmente, se hace una lista de los artículos del tipo de contenido “libros” relacionados con dicho término.

2.6. Fichero functions.php.

He dejado voluntariamente para el final de este artículo el fichero clave de mi proyecto de sitio web especializado, en el cual se incluye el código que permite lograr muchas de sus características más destacadas. Me apresuro a señalar que ninguna de las funciones ha sido programada ex novo, pues todas ellas son adaptaciones basadas en códigos propuestos por los artículos que he encontrado en la Red, a la caza y captura de aquellos trucos y técnicas que me permitieran alcanzar los objetivos deseados. La lista completa de los recursos que he utilizado puede verse en la página Elementos utilizados para crear este sitio, de la web Comentarios y reseñas de libros,

A continuación figura una relación exhaustiva de todas esas funciones. Dada la naturaleza de esta información, de nuevo animo a mis lectores y lectoras a que descarguen el ZIP que aparece al final del artículo y comprueben por sí mismos el código, en cuyos comentarios se describe el propósito de cada función y se cita la procedencia de las fuentes.

a) Función “icono_para_libros”, que permite utilizar en el menú del tipo de contenido personalizado “libros” un par de iconos identificativos (figura 1). Algunos de entre los plugins para declarar tipos de contenido personalizados que mencioné en el artículo del pasado 22 de noviembre permiten definir el icono, pero no así el que yo he utilizado (recuerdo que se trata del Custom Post Type UI), y de aquí la necesidad de acudir a una función específica.

Figura 1 - Interfaz de gestión del tipo de contenido "Libros", con taxonomías y campos personalizados

Figura 1 - Interfaz de gestión del tipo de contenido "Libros", con taxonomías y campos personalizados

b) Función “miniatura_a_partir_de_la_primera_imagen”, para extraer una miniatura de 100×100 píxels y presentarla en el resumen de cada uno de los artículos del tipo “libros” que aparecen en la página Comentarios de libros.

c) Funciones “registrar_columnas_tipo_personalizado_libros”, “gestionar_columnas_tipo_personalizado_libros”, “ordenar_columnas_tipo_personalizado_libros” y “autores_clauses_eduardo”, que sirven para crear un interfaz personalizado para la gestión de los artículos del tipo “libros” en el backend de WordPress (figura 1). Estas funciones permiten filtrar los artículos del tipo “libros” por cualquiera de las etiquetas correspondientes a una taxonomía personalizada (figura 2), y también hacen posible la ordenación alfabética de los artículos de acuerdo con las etiquetas de la taxonomía “autores” (figura 3).

Figura 2 - Filtrado de artículos por etiquetas de taxonomías personalizadas

Figura 2 - Filtrado de artículos por etiquetas de taxonomías personalizadas


Figura 3 - Ordenación de artículos por la taxonomía personalizada "Autores"

Figura 3 - Ordenación de artículos por la taxonomía personalizada "Autores"

d) Función “incluir_libros_en_fuenterss”, para incorporar el contenido del tipo de contenido “libros” a la fuente RSS del sitio web.

e) Funciones “eliminar_menus_para_no_administradores” y “desactivar_widgets_por_defecto_escritorio”, para crear un interfaz de edición más limpio y sencillo, apto para su uso por parte de usuarios poco o nada acostumbrados a lidiar con el backend de WordPress. Los interesados en comprobar el aspecto visual de dicho interfaz pueden comprobarlo en las dos primeras capturas de pantalla que ilustran el artículo Sitios educativos fechos al taxonómico modo 1.

Antes de terminar este artículo, aquí va el ZIP tantas veces prometido:

Comentarios y reseñas de libros

En la próxima entrega de esta serie, que espero sea la última, me ocuparé de los retoques finales a la presentación del sitio (menús, instrucciones, plugins adicionales) y de sus condiciones de uso en entornos educativos. Permanezcan atentos a sus pantallas.

Addenda del 3 de diciembre de 2011

A partir de la versión 3.0.2 del plugin Advanced Custom Fields, publicada el 28 de noviembre, se puede exportar el contenido de los campos personalizados a un fichero en formato XML, que posteriormente se puede importar desde otro blog. Para comprobar la nueva funcionalidad, he exportado la configuración de los campos personalizados del sitio Comentarios y reseñas de libros y he añadido el correspondiente fichero XML al ZIP que aparece sobre estas líneas. De este modo, cualquier persona interesada en reproducir dicho sitio web podrá hacerlo con un trabajo mínimo.