Guía completa: Cómo usar los hooks de Advanced Custom Fields (ACF)
Advanced Custom Fields (ACF) es un plugin de WordPress que facilita la creación y gestión de campos personalizados (textos, selects, repeaters, galerías, flexible content, etc.) mediante una interfaz visual. Permite almacenar datos estructurados asociados a posts, usuarios, taxonomías u opciones, y proporciona hooks (filters y actions) para interceptar su ciclo de vida: carga, render, validación, guardado y formateo.
Hooks principales
Filters
acf/load_field (+ name=/key=/type=)
- Cuando: Antes de renderizar el campo en el admin.
- Parámetros: array $field
- Retorna: array $field
- Usos: Modificar label, placeholder, choices, wrapper.
acf/prepare_field (+ name=/key=/type=)
- Cuando: Antes de preparar el array final del campo.
- Parámetros: array $field
- Retorna: array $field
- Usos: Modificar atributos finales, deshabilitar campo.
acf/load_value (+ name=/key=/type=)
- Cuando: Al cargar el valor almacenado del campo.
- Parámetros: $value, $post_id, array $field
- Retorna: $value
- Usos: Formatear el valor antes de mostrarlo.
acf/update_value (+ name=/key=/type=)
- Cuando: Antes de guardar el valor del campo.
- Parámetros: $value, $post_id, array $field
- Retorna: $value
- Usos: Validar o sanitizar valores.
acf/validate_value (+ name=/key=/type=)
- Cuando: Al validar el valor de un campo.
- Parámetros: $valid, $value, $field, $input
- Retorna: $valid
- Usos: Forzar requerimientos personalizados.
acf/format_value (+ name=/key=/type=)
- Cuando: Al formatear el valor para ser usado en plantilla.
- Parámetros: $value, $post_id, array $field
- Retorna: $value
- Usos: Ajustar presentación para frontend.
Actions
acf/save_post
- Cuando: Después de guardar los campos ACF.
- Parámetros: $post_id
- Usos: Guardar info extra, sincronizar datos externos.
acf/delete_value
- Cuando: Cuando se borra un valor ACF.
- Parámetros: $post_id, $key
- Usos: Limpieza de datos.
acf/render_field
- Cuando: Al renderizar el HTML del campo.
- Parámetros: array $field
- Usos: Añadir HTML extra o atributos.
acf/render_field_settings
- Cuando: Al renderizar configuración del campo en admin.
- Parámetros: array $field
- Usos: Crear opciones personalizadas.
acf/input/admin_enqueue_scripts
- Cuando: Al cargar scripts CSS/JS en admin para ACF.
- Usos: Encolar estilos o scripts personalizados.
Ejemplos prácticos
Caso 1:
Guardar campo ACF como meta del autor usando acf/save_post.
add_action( 'acf/save_post', 'saveAuthorMetaFromAcf' );
function saveAuthorMetaFromAcf( int $postID ): void {
if ( isset( $_POST['acf'] ) && isset( $_POST['acf']['field_random_author_meta'] ) ) {
$authorID = get_post_field( 'post_author', $postID );
$fieldValue = sanitize_text_field( $_POST['acf']['field_random_author_meta'] );
update_user_meta( $authorID, 'custom_author_meta', $fieldValue );
}
}
Caso 2:
Modificar todos los campos select con acf/load_field/type=select
Caso 3:
Formatear valor numérico en frontend con
acf/format_value
Caso 4:
Validar campo obligatorio con
acf/validate_value
Caso 5:
Agregar clase CSS extra en
acf/prepare_field
Caso 6:
Afectar valores antes de guardar con
acf/update_value
Caso 7:
Hook para Flexible Content usando
acf/load_field/type=flexible_content
Caso 8:
Repeater — manipular subcampos al guardar usando
acf/save_post$row ) { // $row normalmente contiene subcampos por key $caption = isset( $row['field_sub_caption'] ) ? sanitize_text_field( $row['field_sub_caption'] ) : ''; // podemos guardar captions individuales en meta separados update_post_meta( $postId, "gallery_item_{$index}_caption", $caption ); } } } }
En esta guía viste los hooks principales de ACF, cómo distinguir filters de actions, y ejemplos prácticos para modificar la definición del campo, validar, sanitizar, formatear y reaccionar al guardado (incluyendo repeaters y flexible content). Usa estos snippets como base y adaptalos a los
nameokeyreales de tus campos.
