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:
- Ir a Campos Personalizados gt Añadir Nuevo.
- Asignar un título al grupo y establecer las reglas de ubicación (Location).
- 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últiplesget_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 🙂 |