Gestión avanzada de campos con Advanced Custom Fields

Contents

Introducción a Advanced Custom Fields

Advanced Custom Fields (ACF) es uno de los plugins más potentes y populares de WordPress para ampliar las capacidades de los custom post types y crear interfaces de edición a medida. Este artículo ofrece una visión profunda y detallada sobre las funcionalidades avanzadas de ACF, su configuración, flujos de trabajo, mejores prácticas y casos reales.

1. Instalación y configuración inicial

  • Requisitos mínimos: WordPress 5.0 , PHP 7.0 .
  • Descarga e instalación: desde el repositorio oficial o la web de ACF.
  • Tipos de licencia: Free (básico) y Pro (avanzado, incluye Repeaters, Flexible Content, Gallery, Options Pages, Maps).

2. Creación de grupos de campos

Un Grupo de Campos agrupa varios campos personalizados y define dónde y cuándo se muestran en el panel de edición. Para crear uno:

  1. Ir a Campos Personalizados gt Añadir Nuevo.
  2. Asignar un título al grupo y establecer las reglas de ubicación (Location).
  3. Agregar campos con su etiqueta, nombre, tipo y ajustes específicos.

2.1 Reglas de ubicación

Permiten mostrar campos en:

  • Entradas, páginas, taxonomías, medios, custom post types.
  • Plantillas específicas (mediante Page Template).
  • Roles de usuario y páginas de opciones.

3. Tipos de campos y usos avanzados

ACF Pro ofrece más de 30 tipos de campos. A continuación, los más relevantes en escenarios complejos:

3.1 Repeater Field

Permite repetir un conjunto de subcampos de forma indefinida. Ideal para listados personalizables:

ltphp
if( have_rows(galeria_fotos) ):
  while( have_rows(galeria_fotos) ) : the_row()
    imagen = get_sub_field(foto)
    echo ltimg src=.esc_url(imagen[url]). alt=.esc_attr(imagen[alt]). /gt
  endwhile
endif
gt

3.2 Flexible Content

Ofrece bloques de contenido modulares que el editor puede reordenar y configurar:

  • Se definen layouts (bloques) con campos propios.
  • En tema, se itera y se renderiza según el tipo de layout:
ltphp
if( have_rows(bloques_personalizados) ):
  while( have_rows(bloques_personalizados) ) : the_row()
    if( get_row_layout() == slider ) {
      // Código para slider
    } elseif( get_row_layout() == texto_con_imagen ) {
      // Código para texto   imagen
    }
  endwhile
endif
gt

3.3 Relationship, Post Object y Taxonomy

Permiten crear enlaces entre contenidos:

Campo Uso principal
Post Object Selección única de una entrada o CPT.
Relationship Selección múltiple, con filtros y búsqueda dinámica.
Taxonomy Selección de términos de taxonomías registradas.

3.4 Gallery, File y Image

Estos campos simplifican la gestión de archivos multimedia:

  • Gallery: creación de galerías de imágenes con orden personalizado.
  • File: subida de documentos y PDFs.
  • Image: selección de una única imagen con opciones de tamaño.

4. Páginas de opciones (Options Pages)

Permiten crear pantallas de configuración globales independientemente de un post. Ejemplos:

  • Datos de contacto global.
  • Redes sociales.
  • Parámetros de pie de página.
ltphp
// Obtener campo de options page
telefono = get_field(telefono_empresa,option)
echo ltpgtTeléfono: .esc_html(telefono).lt/pgt
gt

5. Población dinámica y filtros

ACF permite poblar selectores y relationship fields de forma dinámica:

ltphp
add_filter(acf/load_field/name=mi_selector, llenar_selector)
function llenar_selector(field){
  posts = get_posts(array(post_type=>producto,posts_per_page=>-1))
  field[choices] = array()
  foreach(posts as p){
    field[choices][p->ID] = p->post_title
  }
  return field
}
gt

6. Integración con Gutenberg y REST API

ACF facilita la creación de bloques personalizados de Gutenberg y la exposición de campos en el REST API:

  • ACF Blocks: registrar bloques con acf_register_block_type(). Más info en docs WP.
  • Exponer en REST API: activar la opción Show in REST API en cada grupo de campos.

7. Rendimiento y buenas prácticas

  • Cacheo: emplear transients o capas de cache para consultas repetidas de ACF en front-end.
  • Prefetching: usar get_fields() en lugar de múltiples get_field() para reducir llamadas a la base de datos.
  • Optimizar consultas: limitar posts_per_page y usar índices adecuados.
  • Minimizar lógica en templates: separar visualización y lógica en funciones o clases.

8. Seguridad y validación

Aunque ACF ofrece validación de campos, es importante:

  • Escapar datos con esc_html(), esc_attr(), esc_url().
  • Verificar capacidades de usuario (current_user_can()) al renderizar o guardar datos.
  • Sanitizar valores en filtros acf/validate_value si se requieren reglas extra.

9. Migración y despliegue

Para proyectos de equipo o entornos múltiples:

  • Usar Local JSON: habilitar guardado en acf-json para versionar grupos de campos.
  • PHP Export: generar código PHP de los grupos y mantenerlo en el tema o plugin.
  • Automatizar importación y sincronización en despliegues.

10. Casos prácticos y ejemplos reales

10.1 Sitio de cursos online

  • CPT curso con campos: fecha de inicio, precio, contenidos (Repeater), profesores (Relationship).
  • Opciones globales: datos de pago, integraciones con pasarelas (Options Page).

10.2 Blog corporativo con bloques personalizados

  • Bloques ACF para testimonios, llamadas a la acción, tablas comparativas.
  • Exposición de datos en REST para app móvil o frontend JS.

Conclusión

Advanced Custom Fields, especialmente en su versión Pro, es una solución robusta para proyectos de WordPress que requieren interfaces de edición flexibles y potentes. Con un correcto uso de Repeaters, Flexible Content, Options Pages y la integración con Gutenberg y la REST API, podemos construir sitios totalmente a medida, optimizados y seguros.

Para profundizar aún más, consulta la documentación oficial de ACF Resources y las guías de WordPress Developer.



Acepto donaciones de BAT's mediante el navegador Brave 🙂



Deja una respuesta

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