Editar en masa campos personalizados checkbox en WooCommerce sin valores erróneos
Cuando haces una edición masiva de un campo personalizado de tipo casilla (checkbox) en productos de WooCommerce, el valor que escribe BEAR debe ser el mismo que lee el plugin propietario del campo. Una casilla no tiene un estándar único: un plugin guarda 1 y 0, otro yes y no, un tercero on o nada. Si no coinciden, el campo parece invertido: marcado en el editor de producto pero desactivado en BEAR, y desactivado en el producto en cuanto lo activas en BEAR. Lo mismo ocurre con los campos de selección, que guardan un valor que el editor nunca muestra. A continuación verás cómo se guarda cada formato, cómo hacer que BEAR escriba exactamente ese formato y qué herramienta usar para una ejecución masiva.
Cómo guardan los plugins una casilla de verificación
| De dónde viene la casilla | Marcada | Sin marcar |
|---|---|---|
La función de formulario woocommerce_wp_checkbox() de WooCommerce, usada por muchos plugins y temas | yes | no o vacío, según el código de guardado del plugin |
| ACF Verdadero / Falso y muchos plugins a medida | 1 | 0 |
| Una casilla HTML simple guardada tal como se envía | on | vacío o sin clave |
| Algunos plugins | true | false |
Para saber cuál usa un campo, márcalo en un producto, guarda y lee el valor almacenado: añade la clave un momento como campo campo de texto (textinput), o búscala como se explica en cómo encontrar la clave meta de un producto. _unit_price_auto de Germanized, el interruptor que activa el cálculo automático del precio por unidad, es uno de los que guardan yes y no.
Por qué el campo aparece invertido en BEAR
Un campo meta con la vista casilla de verificación (checkbox) escribe 1 al activarse y 0 al desactivarse, y muestra una celda como activada solo cuando el valor almacenado es 1. Para un campo que guarda yes:
- Un producto con la casilla marcada en WooCommerce aparece como desactivado en BEAR, porque
yesno es1. - Al activarlo en BEAR se escribe
1. El plugin comprueba si esyes, así que la casilla queda ahora sin marcar en el editor de producto. - Al desactivarlo se escribe
0, que tampoco esyes.
No hay nada roto en ninguno de los dos plugins: hablan con valores distintos. La solución es indicarle a BEAR qué valores usa esta clave.
Edición masiva de campos personalizados checkbox con tus propios valores
En la pestaña Ajustes (Settings), dentro de Ajustes generales (General settings), rellena Sobrescribir valor de casilla meta (Override meta checkbox value). Cada regla se compone de la clave meta, dos puntos, el valor para activado, un acento circunflejo y el valor para desactivado:
_unit_price_auto:yes^no,_hide_in_feed:yes^no,_show_badge:on^
- Separa las reglas con comas y no pongas espacios después: la clave debe coincidir exactamente, y
_hide_in_feedcon un espacio al principio es otra clave distinta. - Indica siempre los dos valores. Con solo el primero, como en
_show_badge:on, al desactivar se sigue escribiendo0. Para guardar un valor vacío al desactivar, termina la regla con el acento circunflejo, como en_show_badge:on^más arriba. - Una celda se muestra como activada cuando el valor almacenado es exactamente igual al primer valor.
Yescon mayúscula no esyes.
Guarda los ajustes y recarga el editor. La columna ya muestra el estado real, y al cambiar una celda se escriben los valores del plugin. Con la edición vinculada (binded editing) activada, el mismo cambio se aplica a todos los productos marcados, siempre que Cargar interruptores estilizados (Load beauty switchers), en los mismos ajustes, siga en su valor predeterminado, Sí (Yes). La documentación de Ajustes enumera las demás opciones de ese bloque.
Ejecuciones masivas en todo el catálogo: usa un campo de texto
Para un campo de casilla, la pestaña Edición masiva (Bulk Edit) ofrece un desplegable en el grupo estados y tipos (statuses and types), y la pestaña Filtros (Filters) ofrece un filtro Sí/No. Ambos tienen limitaciones:
- El Sí (Yes) de la pestaña Edición masiva escribe
1, o el primer valor de la sobrescritura. Su No no escribe0ni el segundo valor de la sobrescritura en la versión actual: guarda2, que un campo 1/0 trata como activado y un campo yes/no no reconoce. - El filtro Sí/No compara con
1y0e ignora la sobrescritura, así que no puede encontrar productos poryesono. - Con el interruptor variaciones (variations) activado, los campos de casilla no se ofrecen en absoluto en la pestaña Edición masiva.
Para el trabajo sobre todo el catálogo, cambia la vista del campo a texto mientras dure la ejecución. La vista solo le dice a BEAR cómo mostrar y escribir el campo; cambiarla no toca los valores almacenados.
- En la pestaña Campos meta (Meta Fields), establece la vista del campo en campo de texto (textinput) y su tipo en cadena (string), y pulsa Guardar campos meta (Save meta fields). La columna ahora muestra los valores en bruto:
yes,no,1,0o nada. - En la pestaña Filtros, encuentra los productos que quieres cambiar con el filtro de texto del campo: comportamiento EXACTO (=) (EXACT (=)) con
yes, o Vacío (Empty) para los productos en los que el campo nunca se guardó. Un filtro por2encuentra los productos tocados por una ejecución anterior de No. - En la pestaña Edición masiva, marca la fila del campo en el grupo texto (text), escribe el valor exacto, por ejemplo
no, elige nuevo (new) y pulsa Realizar edición en masa (Do Bulk Edit). Con el interruptor variaciones activado, esta fila también escribe en las variaciones. - Vuelve a poner la vista en casilla de verificación si prefieres los interruptores para las ediciones del día a día.
Muchas tiendas simplemente mantienen los campos yes/no como campos de texto. Cada ejecución masiva queda registrada en el Historial y se puede revertir.
Campos de selección y de lista desplegable
Un campo de selección guarda el valor de la opción elegida, que a menudo no es la etiqueta que muestra el editor: la etiqueta Caja grande puede guardarse como box_l. BEAR no puede ofrecer la lista de opciones del plugin para un campo meta, porque un campo meta es un dato libre y la lista existe solo en el código del otro plugin. Añade ese campo como campo de texto y cadena y escribe el valor almacenado:
- En un producto de prueba, elige cada opción por turno, guarda y anota el valor que muestra la columna. Esa es la lista de valores válidos.
- Usa el filtro de texto con EXACTO (=) para encontrar los productos con una opción, y la pestaña Edición masiva con nuevo para establecer otra.
Un valor que no está en la lista del plugin se guarda, pero el plugin no lo reconocerá; su selector suele mostrar la primera opción, y el front-end puede ignorar el campo. El campo _unit de Germanized es uno de ellos: guarda una unidad como texto, y BEAR lo edita como texto y no como una lista desplegable de unidades. Los campos de selección múltiple guardan una lista serializada; para ACF, consulta edición masiva de campos ACF, y para otros plugins la vista Array (array) descrita en la documentación de Campos meta.
Campos de área de texto
La vista área de texto (textarea) guarda texto como el tipo cadena y lo edita en una ventana emergente con el editor de WordPress, lo que resulta adecuado para textos largos y HTML. En su modo visual, el editor envuelve el texto simple en etiquetas de párrafo; para un campo que debe seguir siendo texto plano, como un código o una nota breve que se imprime dentro de otra frase, cambia la ventana emergente a su modo de texto antes de guardar, o usa campo de texto. Un campo de área de texto tiene el mismo filtro de texto y la misma fila en Edición masiva que un campo de texto.
Sea cual sea la vista, añade la clave exactamente como está almacenada, preferiblemente con Obtener claves meta de cualquier producto mediante su ID (Get meta keys from any product by its ID). La clave de un campo añadido no se puede renombrar: una clave distinta son datos distintos, y los valores guardados bajo una clave mal escrita permanecen ahí hasta que los elimines.
Lista de comprobación
- Se conocen los valores almacenados del campo:
1/0,yes/no,on/vacío u otra cosa. - Los campos que no guardan
1/0tienen una regla de Sobrescribir valor de casilla meta con ambos valores y sin espacios. - Las ejecuciones masivas y los filtros usan la vista de texto con el valor exacto.
- Los campos de selección se editan con el valor de la opción, no con su etiqueta.
- Tras una prueba en dos productos, el editor de producto muestra la casilla marcada o sin marcar como se esperaba.
Si un campo guarda algo que no se contempla aquí, publica la clave del campo y el ID de un producto en el foro de soporte de BEAR.