Editar en masa campos ACF de productos de WooCommerce: fechas y casillas
Para editar en masa los campos ACF de los productos de WooCommerce no necesitas ninguna integración especial: Advanced Custom Fields guarda cada valor de un producto como post meta bajo el nombre del campo, y BEAR edita el post meta como columnas de la tabla. Lo que sí necesitas es saber cómo guarda ACF cada tipo de campo, porque BEAR escribe exactamente el valor que le das. Una fecha en el formato equivocado, una casilla guardada como texto plano o una clave de referencia que falta son la razón de que un valor pueda verse bien en BEAR y aun así no aparecer en la página del producto. A continuación verás cómo asociar correctamente cada tipo de campo, cómo editar listas de casillas y qué comprobar cuando un valor no aparece.
Cómo guarda ACF un campo de producto
Para un campo llamado release_date, ACF escribe dos claves meta en el producto cuando lo guardas en el editor de productos:
release_datecontiene el valor._release_datecontiene la clave del campo, un código comofield_64f0c2a1b7e3d. Esta referencia le indica a ACF a qué definición de campo pertenece el valor.
BEAR edita la primera clave. La referencia ya existe en todos los productos que se guardaron en el editor de productos mientras el grupo de campos estaba asignado a ellos. Los productos importados, o que recibieron el valor desde BEAR antes de que alguien los guardara con el grupo de campos, tienen el valor pero no la referencia. Esa diferencia explica la mayoría de los valores que no aparecen, como se describe más abajo.
Asocia siempre el nombre del campo, no la etiqueta que se muestra sobre el campo ni la clave del campo. El nombre es el Nombre del campo (Field Name) en los ajustes del grupo de campos de ACF.
Añadir un campo ACF como columna
- Rellena el campo en un producto en el editor de productos y guárdalo.
- En la pestaña Campos meta de BEAR escribe el ID de ese producto en Obtener claves meta de cualquier producto mediante su ID (Get meta keys from any product by its ID) y pulsa Obtener (Get). La lista muestra tanto
release_datecomo_release_date; quédate con la que no lleva guion bajo. También puedes escribir el nombre en Añadir clave personalizada a mano (Add Custom key by hands). - Dale al campo un título corto, elige la vista y el tipo de la tabla de abajo y pulsa Guardar campos meta (Save meta fields).
- Activa la nueva columna en la pestaña Ajustes y guarda. Solo entonces el campo aparece en las pestañas Filtros y Edición masiva.
La documentación de Campos meta describe la pestaña en detalle.
Edición masiva de campos ACF según el tipo de campo
| Tipo de campo ACF | Valor guardado | Vista y tipo en BEAR |
|---|---|---|
| Text, Text Area, Email, URL | El texto | campo de texto (textinput) o área de texto (textarea), cadena (string) |
| Number, Range | El número | campo de texto, número (number) |
| True / False | 1 o 0 | casilla de verificación (checkbox) |
| Radio Button, Button Group, Select (un valor) | El valor de la opción elegida, no su etiqueta | campo de texto, cadena |
| Checkbox, Select (varios valores) | Una lista serializada de valores de opciones | campo de texto, cadena, más el código de guardado de abajo |
| Date Picker | 20261231 (Ymd) | campo de texto, cadena o número, nunca calendario (calendar) |
| Date Time Picker | 2026-12-31 18:00:00 | campo de texto, cadena |
| Image, File | El ID del adjunto | campo de texto, número |
| Group | Cada subcampo bajo groupname_subfieldname | Asocia cada subcampo por separado |
| Repeater | El número de filas bajo el nombre, las filas bajo name_0_subfield, name_1_subfield | Véase edición masiva de campos repetidores de ACF |
Las fechas muestran 1970
La vista calendario de BEAR está pensada para fechas guardadas como marca de tiempo Unix, un recuento de segundos. El Date Picker de ACF guarda 20261231 sea cual sea el formato de visualización que elegiste en los ajustes del campo; leído como segundos, ese número es un día de agosto de 1970, que es lo que muestra la celda del calendario (un valor de Date Time Picker se convierte en el 1 de enero de 1970). Elegir una fecha en esa celda guardaría una marca de tiempo, de modo que el campo acabaría con fechas en dos formatos, y cualquier cosa que lo ordene o compare, como una consulta de fechas próximas, las trataría mal.
Asocia las fechas de ACF con la vista campo de texto y escríbelas como las guarda ACF: 20261231. Con el tipo número la columna también se ordena por fecha y se filtra por un rango desde/hasta, por ejemplo de 20261201 a 20261231 para diciembre. Un campo Date Time Picker necesita el valor completo 2026-12-31 18:00:00 como cadena.
True/False y campos con dos opciones
Un campo True / False guarda 1 o 0, que es justo lo que escribe la vista casilla de verificación de BEAR, así que la celda de la tabla funciona sin nada más. Una excepción en BEAR 2.2.4: en la pestaña Edición masiva, elegir No (No) en un campo de casilla guarda el valor 2, que ACF interpreta como verdadero. Para desactivar un campo así en muchos productos, cambia por un momento su vista en la pestaña Campos meta a campo de texto con el tipo número, ponlo a 0 en la pestaña Edición masiva y devuelve la vista a casilla de verificación. Sí (Yes) en masa funciona como se espera. Un campo de botones de radio con dos opciones, como in_season y out_of_season, también puede usar la casilla: en la pestaña Ajustes, en Ajustes generales (General settings), rellena Sobrescribir valor de casilla meta (Override meta checkbox value) con season_status:in_season^out_of_season. Una casilla marcada guarda entonces el primer valor y una desmarcada el segundo; separa varios campos con comas. Los campos con más opciones usan un campo de tipo cadena donde escribes el valor de la opción.
Campos de casillas y de selección múltiple
ACF guarda una lista de casillas como un array serializado, mientras que un campo de texto de BEAR guarda texto. Escribe los valores de las opciones separados por comas, por ejemplo pdf, epub, print, y añade un manejador de guardado que convierta el texto en el array que espera ACF. Las preguntas frecuentes sobre campos select y multiselect de ACF muestran la versión básica; la de abajo también guarda una única opción como lista, como hace ACF, y escribe la clave de referencia.
/*
* BEAR + ACF: save comma-separated choices typed in BEAR as the array used by
* ACF checkbox and multi-select fields, and write the ACF field reference.
* Child theme functions.php or a code snippets plugin.
* List each field as 'field_name' => 'ACF field key'.
*/
add_filter('update_post_metadata', function ($check, $object_id, $meta_key, $meta_value) {
$acf_list_fields = array(
'product_formats' => 'field_64f0c2a1b7e3d',
);
if (!isset($acf_list_fields[$meta_key]) || !is_string($meta_value) || '' === trim($meta_value)) {
return $check;
}
$choices = array_values(array_filter(array_map('trim', explode(',', $meta_value)), 'strlen'));
update_post_meta($object_id, $meta_key, $choices);
update_post_meta($object_id, '_' . $meta_key, $acf_list_fields[$meta_key]);
return true;
}, 10, 4);
El propio ACF guarda arrays, no texto, así que el manejador no interfiere con el editor de productos, y una celda vaciada se guarda como vacía. Si ya usas la versión de las preguntas frecuentes en un campo, sustitúyela por esta en lugar de ejecutar ambas. Usa los valores de las opciones, no sus etiquetas. En la pestaña Edición masiva usa nuevo (new): añadir al final (append) y añadir al principio (prepend) agregan texto a la lista almacenada y no funcionan con estos campos.
Para encontrar la clave del campo, asocia por un momento _product_formats como campo de tipo cadena: en los productos guardados en el editor de productos su columna muestra el código field_.
El valor está guardado pero no se muestra en la página del producto
Cuando BEAR muestra el valor nuevo y la página del producto no, revisa estas causas por orden.
- El formato. Compara el valor almacenado con la tabla de arriba: un select guardado con su etiqueta en lugar de su valor, o una lista de casillas guardada como texto plano, no coincide con ninguna de las opciones del campo, y una fecha guardada como marca de tiempo no está en el formato que escribe ACF.
- La referencia. Los productos sin la clave
_fieldnamesiguen teniendo el valor, y elget_field()de ACF normalmente puede encontrar el campo por su nombre. El código que depende de la referencia puede no reconocer el valor; los plugins de filtrado y búsqueda que leen campos ACF, como FacetWP, son el caso típico. Puedes añadir la referencia sin código. Asocia_release_datecomo campo de tipo cadena, lee la clave del campo en un producto guardado en el editor y, en la pestaña Edición masiva, establécela con nuevo en todos los productos que usan el campo. La clave es la misma para todos los productos. - Cachés e índices. Vacía la caché de páginas y cualquier caché de objetos. Después de cada cambio BEAR ejecuta las acciones habituales
save_postywoocommerce_update_product, que la mayoría de los plugins de indexación escuchan; si un plugin de filtros como FacetWP sigue mostrando datos antiguos, ejecuta su reindexación una vez.
Los repetidores tienen referencias para el repetidor y para cada fila de subcampos, por eso un repetidor editado solo en las claves de sus subcampos a menudo aparece en la parte pública únicamente después de guardar el producto a mano. Las preguntas frecuentes sobre repetidores enlazadas arriba lo resuelven con el propio update_field() de ACF.
Campos ACF en variaciones
Las reglas de ubicación propias de ACF no colocan grupos de campos en las variaciones de producto; los complementos que lo hacen guardan los valores como meta de cada variación. Escribe el ID de una variación en Obtener claves meta de cualquier producto mediante su ID para ver sus claves, asócialas como cualquier otro campo y activa variaciones (variations) en el panel de herramientas para editarlas. Las filas de texto y número de la pestaña Edición masiva escriben entonces en las variaciones. En ese modo se aplican dos límites: los filtros de campos meta miran los productos padre, y los campos con la vista casilla de verificación no se ofrecen en la pestaña Edición masiva.
Antes de una operación masiva con campos ACF
- El campo está asociado por su nombre, con la vista y el tipo de la tabla.
- Las fechas se escriben como
20261231, nunca se eligen en una celda de calendario. - Los campos de casillas y de selección múltiple tienen el manejador de guardado, y las operaciones usan nuevo.
- Los productos creados fuera del editor de productos tienen la referencia
_fieldname. - Una prueba con dos productos muestra el valor en la página del producto; una operación equivocada se puede revertir en la pestaña Historial.
Si aquí no se cubre un tipo de campo de ACF, publica el tipo de campo y el ID de un producto en el foro de soporte de BEAR.