Gestión de campos personalizados con el plugin Advanced Custom Fields

Gestión de campos personalizados con el plugin Advanced Custom Fields

Para crear las taxonomías, los tipos de contenido y los campos personalizados que necesita un sitio como el de Comentarios y reseñas de libros, sobre el que escribí el pasado jueves en la anterior entrega de esta serie, existen dos procedimientos diferentes. El primero consiste en declarar dichos elementos dentro del fichero functions.php del tema activo; es el más elegante y preciso, pero también el más difícil de poner en práctica. El segundo implica el uso de uno o varios plugins de WordPress, lo cual supone ciertas restricciones y peajes, dado que no todos los plugins pueden lograr todo lo que el diseñador de un sitio se proponga, pero a cambio es una alternativa mucho más accesible para la inmensa mayoría de los usuarios.

A diferencia de lo que en su día hice con el proyecto de antología textual, para el sitio Comentarios y reseñas de libros he optado por la segunda opción, pues me interesaba recorrer la misma senda que deberían emprender los docentes interesados en la experiencia, y encarar las mismas dificultades a las que ellos habrían de enfrentarse. Así pues, tras muchas consultas y pruebas, opté por utilizar los plugins que describo a continuación.

1. Custom Post Type UI.

Este plugin permite declarar y configurar tanto las taxonomías como los tipos de contenido personalizados, mediante un interfaz gráfico muy fácil de utilizar (siempre, claro está, que se tenga un conocimiento mínimo de ambos conceptos y de la lengua inglesa). Como puede observarse en las figuras 1 y 2, correspondientes a la configuración del tipo “libros” y la taxonomía “autores”, el plugin permite definir en la lengua del usuario todas las etiquetas que posteriormente aparecerán en los menús de creación y gestión de los artículos correspondientes al tipo de contenido personalizado y los términos o etiquetas relacionados con las taxonomías personalizadas.

Figura 1 - Edición del tipo de contenido personalizado "Libros"

Figura 1 - Edición del tipo de contenido personalizado "Libros"


Figura 2 - Edición de la taxonomía personalizada "Autores"

Figura 2 - Edición de la taxonomía personalizada "Autores"

Además, el plugin hace posible establecer las necesarias relaciones entre el tipo de contenido y la taxonomía, y definir con precisión qué elementos del interfaz de edición del tipo de contenido personalizado se mostrarán a los usuarios, lo cual resulta de gran utilidad para adecuar el editor del sitio web a las características de las personas que vayan a hacer uso de él. En la mayoría de los casos, los usuarios pueden desentenderse de los parámetros más técnicos y difíciles de entender (como “Public”, “show UI”, “Has Archive”, “Query Var”, etc.), pues el plugin utiliza por defecto aquellos que mejor se ajustan a las situaciones más habituales.

Conviene señalar que el plugin Custom Post Type UI no es el único que sirve para la creación y gestión de taxonomías y tipos de contenido personalizados, pues hay bastantes que pueden competir ventajosamente con él. Sin ánimo de agotar el inmenso catálogo de posibilidades que ahora mismo brinda WordPress (véanse los listados que en su día publiqué en Taxonomías, tipos de contenido y paneles personalizados en WordPress. El turno de los plugins, Más sobre taxonomías y tipos de contenido personalizados: plugins para taxonomías y Más sobre taxonomías y tipos de contenido personalizados: plugins para los tipos de contenido), a los lectores de este artículo quizás les interese saber que pueden elegir entre un amplio abanico de extensiones: CMS Press, Custom Content Type Manager, Custom Content Types, CustomPress (de pago), Custom Press, Easy Content Types (también de pago, y quizás el más completo de todos), GD Custom Posts And Taxonomies Tools (con versiones gratuita y de pago), More Taxonomies, More Types, Pods CMS Framework, Simple Custom Post Types, Simple Taxonomy, Taxonomy Manager, Ultimate Post Type Manager, Ultimate Taxonomies Manager, WP Easy Post Types y WP Post Type UI.

Si he seleccionado de entre todos ellos el Custom Post Type UI ha sido por varias razones: es gratuito, no es difícil de utilizar (aunque exige dedicarle una cuidadosa atención), carece de fallos graves que dificulten su uso y, sobre todo, es capaz de generar el código PHP necesario para declarar las taxonomías y los tipos de contenido (figura 3), con lo cual una configuración dada es fácilmente exportable a otro sitio web elaborado con WordPress, para lo cual basta con copiar el código en el fichero functions.php del tema del nuevo sitio. De hecho, tengo intención de publicar en próximas entregas de esta serie un fichero ZIP que, entre otros elementos, incluirá el código necesario para reproducir el tipo “libros” y las taxonomías “autores”, “géneros literarios” y “literaturas nacionales” en otros sitios web.

Figura 3 - Exportación del tipo de contenido "Libros"

Figura 3 - Exportación del tipo de contenido "Libros"

2. Advanced Custom Fields.

La creación y gestión de campos personalizados asociados a las taxonomías y los tipos de contenido personalizados y su integración en el interfaz de edición de WordPress son tareas significativamente más difíciles de llevar a cabo que las que hemos descrito en el punto anterior. Es cierto que en WordPress se puede conseguir casi cualquier objetivo mediante la manipulación del código o el uso de extraordinarias librerías como Custom Meta Boxes, pero también lo es que tales desarrollos solo quedan al alcance de expertos que tengan una amplia experiencia en la programación en PHP.

La mayoría de los usuarios tendrán, pues, que conformarse con un plugin que haga por ellos el trabajo pesado. Afortunadamente, existen abundantes recursos, como los plugins Advanced Custom Fields, Custom Field Suite, Custom Field Template, Custom Fields, Custom Metadata Manager, Easy Custom Fields, Just Custom Fields, Magic Fields y Magic Fields 2, More Fields, Simple Fields, Verve Meta Boxes. Ahora bien, debemos advertir que las extensiones más potentes de la lista son difíciles de utilizar, o adolecen de diversos bugs que las hacen poco aconsejables. Tras numerosas pruebas, yo me decidí en primera instancia por el plugin More Fields, aunque con el sitio web ya construido tuve que descartarlo porque al editar los campos personalizados perdí, de forma inexplicable, las configuraciones que tanto me había costado desarrollar.

En busca de un recambio, y tras una nueva serie de experimentos, opté por el plugin Advanced Custom Fields, que tiene dos versiones, una gratuita y otra de pago, esta última con funcionalidades adicionales. Los motivos que me llevaron a utilizar la versión gratuita (más que suficiente para la mayoría de las necesidades) son, en primer lugar, que el plugin se integra perfectamente con los tipos de contenido personalizados y con el editor de WordPress (véanse las opciones que aparecen en la parte inferior de la figura 4, correspondientes al grupo de campos personalizados que asocié al tipo de contenido “libros”); en segundo lugar, que la extensión permite definir una gran variedad de campos (texto, área de texto, texto WYSIWYG, imagen, subida de archivos, selección única o múltiple, campos lógicos, enlaces, selector de colores, etc.); por último, el plugin está muy bien documentado y ofrece un espléndido sistema de soporte. No está enteramente libre de bugs (por ejemplo, éste), pero la comunidad de usuarios los tiene identificados y, lo que es mejor, contribuye positivamente a solucionarlos.

Figura 4 - Gestión de campos personalizados con el plugin Advanced Custom Fields

Figura 4 - Gestión de campos personalizados con el plugin Advanced Custom Fields

En mi sitio de comentarios y reseñas de libros, he definido los siguientes campos:

  • Campos “Resumen del argumento”, “Ficha editorial” e “Información complementaria”. Los tres corresponden al tipo “Wysiwyg Editor”, lo cual supone en la práctica otras tres instancias adicionales del editor visual de WordPress. El plugin Advanced Custom Field tiene la ventaja de que cuando se utiliza este tipo de campo, es posible conmutar en cualquier momento entre el editor visual y el editor HTML. Además, permite decidir si se utiliza o no la barra de iconos completa del editor y si se quieren mostrar los botones de subida de ficheros. En mi caso, la primera opción está definida en “Full” y la segunda en “No”, pues no me interesa que los alumnos que van a rellenar los campos adicionales suban ficheros desde las correspondientes instancias del editor. También es posible añadir a cada campo un completo juego de instrucciones. Todas estas funcionalidades pueden advertirse en la figura 5.
  • Un campo de texto denominado “Catalogación del libro”, que admite el formato HTML, y que está destinado al código de catalogación de la Clasificación Decimal Universal (figura 6). Advierto que este campo es, en la práctica, redundante con respecto a la taxonomía “Literaturas nacionales”, pero lo he añadido para experimentar con los tipos de campos.
  • Un campo de menú desplegable de opciones o “select”, denominado “Ubicación”. Este tipo de campos es muy útil cuando una sección del contenido debe rellenarse con arreglo a un juego limitado de opciones, como es el caso que puede observarse en la figura 7, que ilustra la situación de un libro de un centro educativo, que puede localizarse en cuatro ubicaciones diferentes: la Biblioteca, la Sala de Profesores, el Departamento de Lengua y una cuarta opción, que a falta de otra denominación mejor he etiquetado como “Propiedad personal”, para aquellos libros que no están inventariados en el centro, sino que son propiedad de los alumnos o sus profesores.

Figura 5 - Edición de un campo personalizado de tipo Wysiwyg Editor

Figura 5 - Edición de un campo personalizado de tipo Wysiwyg Editor


Figura 6- Edición de un campo personalizado de tipo Texto

Figura 6- Edición de un campo personalizado de tipo Texto


Figura 7 - Edición de un campo personalizado de tipo Select

Figura 7 - Edición de un campo personalizado de tipo Select

El resultado de la combinación que he puesto en práctica con el tipo de contenido “libros”, sus tres taxonomías asociadas y los cinco campos personalizados es un editor simplificado y adaptado a la particular naturaleza del propósito que orienta la elaboración del sitio web. Dicho editor cuenta con las instrucciones necesarias para ser utilizado por usuarios que tengan poca o nula experiencia previa con WordPress (véase la captura del editor incluida en la figura 2 del artículo Sitios educativos fechos al taxonómico modo 1). Basta pues, con los plugins Custom Post Types UI y Advanced Custom Fields para desarrollar un sitio web totalmente personalizado y para comenzar a escribir en él. Ahora bien, su presentación en sociedad requiere de un minucioso trabajo de retoque del tema y de los ficheros de plantilla, tema sobre el cual tratará la próxima entrega de esta serie. Permanezcan atentos a sus pantallas, por favor.

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 efectuar la operación de exportación, basta con acudir al menú Herramientas > Exportar y selecionar la opción Advanced Custom Fields.

Addenda del 10 de diciembre de 2011

Acabo de enterarme de la muy reciente publicación (el día 6 de diciembre) de un plugin que parece llamado a revolucionar el trabajo con los tipos de contenido, las taxonomías y los campos personalizados. Se llama Types, es gratuito, y permite definir y gestionar conjuntamente estos tres elementos, mediante un interfaz de usuario que, a juzgar por lo que he podido ver en el sitio web dedicado a esta extensión (por cierto, con una excelente documentación), parece muy fácil de utilizar y de gran potencia. En todo caso, conviene tener en cuenta que el máximo aprovechamiento de Types se obtiene en combinación con otro plugin para la creación de plantillas y listados, denominado Views, que es de pago. Habrá que estar muy atento a esta pareja, que promete grandes satisfacciones.