advanced custom fields

Advanced Custom Fields ACF

Si estás desarrollando un tema a medida en WordPress un plugin imprescindible que no te puede faltar es Advanced Custom Fields.

¿Cómo decirlo en pocas palabras? Éste plugin lleva WordPress a otro nivel, y permite una personalización extrema de cualquier elemento de nuestro sitio: entradas, páginas, categorías, etiquetas, custom post types, etc…

Éste plugin se lo debemos a Elliot Condon. Lo mejor de todo es que es gratuito. Cierto es que dispone de una versión PRO con infinidad de posibilidades y varios Add-ons de pago, pero en esta entrada vamos a hablar del plugin en sí, y de un Add-on muy recomendable: Repeater Field.

Antes decíamos brevemente que ACF llevaba WordPress a otro nivel, veamos cómo. Éste plugin te permite añadir campos personalizados a cualquier elemento: entradas, páginas, categorías, etc…

Es altamente configurable, te permite agregar campos personalizados tipo texto, texto enriquecido, imágenes, archivos, checkboxs, selects, google map, datepicker, colorpicker, etc… y además puedes establecer en qué tipo de elemento quieres que aparezcan: entradas, páginas, un tipo de plantilla concreta, una categoría específica, etc…

Además en su página oficial puedes encontrar multitud de guías y ejemplos prácticos. Está pensado para desarrolladores, posee una gran cantidad de hooks y filters propios.

Antes hacía referencia a un Add-on altamente recomendable: Repeater Fields. Con éste Add-on podrás crear campos personalizados de tipo “repeater”, esto es, si en las entradas quisieras añadir un campo personalizado de tipo imagen para que el usuario final pueda añadir de 1 a n imágenes, el repeater lo que hace es crear un array al que puedes añadir tantos elementos (en este caso imágenes) como quieras.

Además, puedes anidar un repeater dentro de otro, con lo que conseguirías agregar cualquier tipo de metainformación a una entrada, y moldear la estructura según tus necesidades. Después en la página de edición de entradas podrás añadir y/o borrar tantos elementos como desees y ordenarlos simplemente seleccionando y arrastrando con el ratón.

Vamos a ver un ejemplo práctico de uso: Nos piden crear una categoría Noticias, donde las entradas (además de tener su título, contenido e imagen destacada correspondiente) tengan un campo personalizado para subir un archivo PDF y una galería de imágenes.

En el administrador de WordPress hacemos click en el icono “Custom Fields” y a continuación en “Añadir nuevo”. Una vez aquí establecemos el nombre del grupo de campos, en nuestro caso “Noticias” y agregamos un campo. Se nos abre un desplegable que tendremos que rellenar con la información del tipo de campo que queremos insertar. Como comentamos anteriormente es altamente configurable, vamos a detenernos en lo más relevante.

Para el caso del archivo PDF:

  • Label del campo: Archivo PDF (etiqueta que aparecerá en la pantalla de edición de noticias)
  • Nombre del campo: cf_pdf_file (El nombre con el que se guardará en BBDD y que usaremos en la programación de nuestra plantilla)
  • Tipo de campo: Archivo (Nos habilitará un botón en la pantalla de edición de noticias para agregar un archivo usando la librería multimedia)
  • Retornar valor: File Object (Podemos escoger que tipo de valor retornará el campo, lo más interesante es que devuelva el objeto completo para disponer de toda la información sobre el mismo, aunque es cuestión de gustos)

Para la galería de imágenes:

  • Label del campo: Galería de imágenes
  • Nombre del campo: cf_gallery
  • Tipo de campo: Repeater
  • Repeater Fields:
    • Label del campo: Imágenes
    • Nombre del campo: cf_gallery_item
    • Tipo de campo: Imagen
    • Retornar valor: Image Object

En el siguiente metabox (Location) establecemos las reglas donde queremos que aparezca éste grupo de campos personalizados, en nuestro caso: Post Type is equal to post, de tal manera que sólo aparecerá en la edición de entradas, quedando de la siguiente manera:

acf-backend

Para mostrar esta información en nuestro single.php usaremos las funciones que trae consigo ACF. Dentro de nuestro loop utilizaremos la función get_field() para recuperar los valores de estos campos:

<?php

get_field( 'cf_pdf_file' );

// Nos devuelve un objeto (array) con estos datos: [id] [alt] [title] [caption] [description] [mime_type] [url]

Para el caso de la galería de imágenes, al ser un campo repeater disponemos de las funciones has_sub_field() y get_sub_field()

<?php

if ( get_field( 'cf_gallery' ) ) {
    while ( has_sub_field( 'cf_gallery' ) ) {
        get_sub_field( 'cf_gallery_item' );
    }
}

// Nos devuelve un objeto (array) con estos datos: [id] [alt] [title] [caption] [description] [mime_type] [url] [width] [height] [sizes]

En definitiva, con éste plugin podemos personalizar extremadamente nuestras páginas, entradas, custom post types, categorías… para agregar tantos campos personalizados como queramos.

¿Qué os parece?

¿Te ha resultado útil esta información? 🍺

Si este post te ha resuelto un problema, invítame a un café o a una cerveza. Con este pequeño gesto me animas a seguir escribiendo.

Comentarios

2 comentarios en Advanced Custom Fields ACF

  1. Hola.

    Excelente post, tengo una duda un poco fuera de lo que indicas.

    Al usar acf con un campo de taxonomías, la ligo a una taxonomía existente sin problemas, el problema es que a la hora de que inserto el campo, solo me devuelve el id de la taxonomía y no la taxonomía como tal.

    Que puede ser?

    De antemano muchas gracias.

    1. hola!

      Deberías tener una opción que se llama «Retornar valor» que por defecto te devuelve el «ID de Término», pero puedes indicarle que te devuelva el «Objeto de Término»

      Saludos

Deja un comentario

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

  • El fin del tratamiento es únicamente la moderación de comentarios para evitar spam
  • La legitimación es tu consentimiento al comentar
  • No se comunicará ningún dato a terceros salvo por obligación legal
  • Tienes derecho al acceso, rectificación y eliminación de los comentarios