Editar en masa etiquetas y marcas de productos en WooCommerce: añadir y quitar
Editar en masa las etiquetas o las marcas de los productos en WooCommerce parece sencillo hasta que la lista se alarga: añadir una etiqueta a doscientos productos, quitar todas las etiquetas de un catálogo etiquetado por una importación antigua, asignar la marca correcta a toda una gama de productos o rellenar una taxonomía de marcas a partir de un atributo Marca. Las etiquetas y las marcas son taxonomías, así que en BEAR funcionan como las categorías, con algunas diferencias que deciden si una operación hace lo que esperas. A continuación verás las operaciones con etiquetas, las formas más rápidas de quitar etiquetas en masa, cómo tratar las marcas de WooCommerce y de los plugins de marcas más habituales, y un fragmento de código para copiar un atributo a una taxonomía de marcas.
Editar en masa las etiquetas de productos de WooCommerce en la pestaña Edición masiva
En la pestaña Edición masiva cada taxonomía de producto tiene su propia fila: Categorías, Etiquetas, Marcas y las taxonomías de otros plugins. Marca selecciónalo para usarlo (select it to use) junto a la fila Etiquetas, elige las etiquetas en la lista y escoge un comportamiento:
- añadir al final (append) añade las etiquetas seleccionadas y conserva las existentes. Un producto no puede tener la misma etiqueta dos veces, así que repetir la operación no cambia nada.
- reemplazar (replace) convierte las etiquetas seleccionadas en las únicas etiquetas de cada producto.
- quitar (remove) desvincula las etiquetas seleccionadas y deja las demás.
La operación se aplica a los productos que marcaste en la página actual o, si no hay ninguno marcado, a los productos que deja el filtro de la pestaña Filtros, o a toda la tienda cuando no hay filtro. Los ejemplos paso a paso de edición masiva de categorías funcionan igual con la fila Etiquetas. Cada operación sobre taxonomías queda registrada en la pestaña Historial y se puede revertir.
Dos detalles son propios de las etiquetas:
- Un «reemplazar» vacío no hace nada con las etiquetas. Si marcas la fila Etiquetas, no seleccionas nada y eliges reemplazar, los productos conservan sus etiquetas. En las taxonomías jerárquicas, como Categorías y las Marcas de WooCommerce, el mismo «reemplazar» vacío elimina todos sus términos de los productos, así que nunca dejes marcada una fila de taxonomía sin selección. Para borrar etiquetas, usa los métodos de la sección siguiente.
- La lista muestra solo las etiquetas existentes. Crea una etiqueta nueva en Productos → Etiquetas, o con crear nuevo término (create new term) en la ventana de etiquetas del Editor de productos; aparece enseguida en la lista de Edición masiva.
Quitar todas las etiquetas de los productos de WooCommerce
El método adecuado depende de cuántas etiquetas haya y de si las propias etiquetas deben conservarse.
Desvincular todas las etiquetas y conservarlas en la tienda
Con una lista corta de etiquetas, marca la fila Etiquetas, selecciona todas las etiquetas y ejecuta quitar. La lista de Edición masiva no tiene ningún botón que seleccione todos los términos, así que con cientos de etiquetas usa una etiqueta temporal. Basta una operación y un borrado, sea cual sea el número de etiquetas:
- Crea una etiqueta como tmp-clear en Productos → Etiquetas.
- Selecciona los productos, marca la fila Etiquetas, selecciona solo tmp-clear y ejecuta reemplazar. Ahora cada producto tiene esta única etiqueta y ninguna otra.
- Elimina tmp-clear en Productos → Etiquetas. Al eliminar un término se desvincula de todos los productos, así que los productos se quedan sin etiquetas.
El paso 2 queda en el Historial, de modo que si la selección era incorrecta puedes revertirlo y recuperar las etiquetas anteriores. Hazlo antes del paso 3 si algo no te cuadra.
Eliminar las etiquetas de la tienda por completo
Si ya no quieres las propias etiquetas, no hace falta ninguna edición masiva: en Productos → Etiquetas marca las etiquetas, elige eliminar (Delete) en las acciones en lote y aplica. WordPress las desvincula de todos los productos. Esto borra los términos con sus descripciones y páginas de archivo, y el Historial de BEAR no puede recuperarlos.
Quitar una etiqueta de una parte del catálogo
Filtra por la etiqueta en la pestaña Filtros, añade cualquier otra condición (una categoría, un rango de precios, una palabra del título) y ejecuta quitar con esa etiqueta en la fila Etiquetas. Los productos fuera del filtro la conservan.
Reemplazar o fusionar etiquetas
Para cambiar el nombre de una etiqueta en todos los productos, edita su nombre en Productos → Etiquetas; los productos apuntan al término, así que no hay que cambiar nada más. Para fusionar t-shirt en tshirt: filtra por t-shirt, añadir al final tshirt y después quitar t-shirt con el mismo filtro, o elimínala en Productos → Etiquetas. Una fila lleva un solo comportamiento por operación, así que siempre son dos pasos.
Borrar etiquetas en la tabla con la edición vinculada
Al hacer clic en una celda Etiquetas del Editor de productos se abre una ventana con una búsqueda rápida, un filtro solo seleccionados (selected only) y una casilla Seleccionar todos los términos (Select all terms) que marca o desmarca todas las etiquetas a la vez. Con la edición vinculada (binded editing) activada y varios productos marcados, el conjunto de etiquetas que apliques se escribe en todos ellos y reemplaza sus propias etiquetas. Funciona mientras quede al menos una etiqueta marcada. En la versión 2.2.4 un conjunto vacío borra solo el producto cuya celda editaste; los demás productos marcados conservan sus etiquetas. Para borrar etiquetas en muchos productos, usa la pestaña Edición masiva como se ha descrito arriba.
Asignar marcas en masa en WooCommerce
BEAR no tiene una lista de plugins de marcas compatibles porque no la necesita: toda taxonomía registrada para productos aparece en él automáticamente, como filtro, como fila en la pestaña Edición masiva y como columna que se puede activar en la pestaña Ajustes. La mayoría de las soluciones de marcas guardan las marcas como una taxonomía de este tipo:
| Marcas de | Taxonomía |
|---|---|
| WooCommerce Brands, parte de WooCommerce desde la versión 9.6 | product_brand |
| YITH WooCommerce Brands Add-on | yith_product_brand |
| Perfect Brands WooCommerce | pwb-brand |
Para cualquier otro plugin, abre su lista de marcas en el administrador: la dirección contiene taxonomy= seguido del nombre de la taxonomía. Si las marcas del plugin aparecen ahí, BEAR las edita como las etiquetas. Para asignar marcas en masa:
- Selecciona los productos que pertenecen a la marca: filtra por una palabra del título, un SKU que empiece por el prefijo de la marca, una categoría o un campo de proveedor, o márcalos.
- En la pestaña Edición masiva marca la fila de marcas, selecciona la marca y elige reemplazar si un producto debe tener exactamente una marca, o añadir al final para añadirla a las existentes.
- Activa la columna de marcas para comprobar el resultado, o filtra por la marca.
Para encontrar los productos que aún no tienen marca, usa el operador NOT EXISTS sobre la taxonomía de marcas, descrito en cómo encontrar productos sin categoría ni marca. Las marcas nuevas, con sus logotipos y descripciones, se crean en la pantalla propia del plugin de marcas; BEAR las asigna.
Existen otras dos configuraciones. Algunos temas y plugins guardan la marca en un campo meta del producto: añade su clave en la pestaña Campos meta, como se explica en cómo encontrar la clave meta de un producto. Muchas tiendas usan un atributo global como Marca (pa_brand); en BEAR eso es una fila de atributos, tratada en añadir atributos en masa.
Copiar un atributo Marca a una taxonomía de marcas
Un caso habitual: el feed del proveedor rellena el atributo pa_brand, y el plugin de marcas necesita el mismo valor en su propia taxonomía. Un término de atributo y un término de marca son objetos distintos en taxonomías distintas, y la pestaña Edición masiva asigna términos fijos en lugar de copiarlos, así que no existe una única operación de BEAR para esto. Con pocas marcas, hazlo marca por marca: en la pestaña Filtros selecciona un valor del atributo Marca y después usa añadir al final con la marca correspondiente en la pestaña Edición masiva. Un filtro y una operación por marca.
Con decenas de marcas o una importación diaria, un script de un solo uso es más rápido. Lee el atributo Marca de cada producto, crea una marca con el mismo nombre si todavía no existe y se la asigna:
/*
* One-off: give every product the brand named like its Brand attribute.
* Child theme functions.php or a code snippets plugin. As an administrator open
* /wp-admin/?copy_attribute_to_brand=1, then =2, =3 and so on until it reports
* 0 products. Remove the snippet afterwards.
*/
add_action( 'admin_init', function () {
if ( empty( $_GET['copy_attribute_to_brand'] ) || ! current_user_can( 'manage_woocommerce' ) ) {
return;
}
$from = 'pa_brand'; // the attribute to read
$to = 'product_brand'; // the brand taxonomy: product_brand, pwb-brand, yith_product_brand...
$replace = true; // false keeps the brands a product already has
$page = max( 1, (int) $_GET['copy_attribute_to_brand'] );
$ids = get_posts(
array(
'post_type' => 'product',
'post_status' => 'any',
'fields' => 'ids',
'posts_per_page' => 500,
'paged' => $page,
'orderby' => 'ID',
'order' => 'ASC',
'tax_query' => array(
array(
'taxonomy' => $from,
'operator' => 'EXISTS',
),
),
)
);
$updated = 0;
foreach ( $ids as $id ) {
$names = wp_get_post_terms( $id, $from, array( 'fields' => 'names' ) );
if ( is_wp_error( $names ) || empty( $names ) ) {
continue;
}
$brand_ids = array();
foreach ( $names as $name ) {
$term = term_exists( $name, $to );
if ( ! $term ) {
$term = wp_insert_term( $name, $to );
}
if ( is_array( $term ) ) {
$brand_ids[] = (int) $term['term_id'];
}
}
if ( $brand_ids ) {
wp_set_object_terms( $id, $brand_ids, $to, ! $replace );
++$updated;
}
}
wp_die( esc_html( sprintf( 'Page %d: %d products updated.', $page, $updated ) ) );
} );
- Ajusta primero
$fromy$toa los nombres de tu atributo y de tu taxonomía de marcas. El script trabaja por páginas de 500 productos, de modo que los catálogos grandes no alcanzan el límite de tiempo del servidor. - Solo lee atributos globales. Los valores escritos en un único producto son atributos personalizados, no términos de taxonomía; conviértelos antes en atributos globales.
- El script escribe directamente, así que el Historial de BEAR no lo registra. Haz una copia de seguridad de la base de datos antes de la primera página.
- Después de cada importación, ejecútalo de nuevo; con
$replaceentrue, un producto cuyo atributo Marca ha cambiado recibe la marca nueva en lugar de una segunda.
Un hook sobre las ediciones de atributos de BEAR no es un sustituto: en la pestaña Edición masiva, los cambios de atributos no pasan por woobe_before_update_product_field, y los atributos rellenados por una importación no tocan BEAR en absoluto.
Etiquetas y marcas en la versión gratuita
En la versión gratuita solo la fila Categorías de las taxonomías participa en las operaciones de Edición masiva. Las filas de Etiquetas y de marcas se muestran en contenedores rojos sin la casilla selecciónalo para usarlo, y la edición vinculada de esas columnas se rechaza con un aviso. El panorama completo está en las limitaciones de la versión gratuita.
Si no funciona
- Falta la fila de marcas. El plugin no registra sus marcas como taxonomía de producto; busca un campo meta o un atributo como se ha descrito arriba. Para un gestor de la tienda, comprueba además que la columna esté visible para el gestor de la tienda (visible for the shop manager) en la pestaña Ajustes.
- Las etiquetas no han desaparecido. Un reemplazar vacío y la edición vinculada sin ninguna etiqueta marcada no borran las etiquetas de los demás productos; usa quitar o la etiqueta temporal.
- Han cambiado demasiados productos. La operación afectó a todos los productos filtrados o a toda la tienda porque no había ningún producto marcado; abre el Historial y revierte el registro.
Si una operación con etiquetas o marcas sigue sin dar el resultado esperado, abre un tema en el foro de soporte de BEAR con el nombre de la taxonomía, el comportamiento que elegiste y el ID de un producto.