BEAR - WooCommerce Bulk Editor and Products Manager Professional

Editar SKU en masa en WooCommerce: reemplazar, prefijos, SKU de variaciones, duplicados

Los cambios de SKU rara vez llegan de uno en uno. Un proveedor cambia un código que aparece dentro de cientos de SKU, un nuevo canal de venta necesita un prefijo, las variaciones necesitan SKU construidos a partir del SKU del padre y su talla, los productos nuevos necesitan numeración. BEAR hace cada uno de ellos como una edición masiva de SKU en WooCommerce en la pestaña Edición en masa (Bulk Edit). A continuación: qué hace cada comportamiento, cómo construyen los productos variables los SKU de sus variaciones, los límites de la numeración secuencial y cómo mantener los SKU únicos, porque WooCommerce rechaza los duplicados y un duplicado detiene una ejecución masiva.

Comportamientos para editar SKU en masa en WooCommerce: añadir al final, al principio, nuevo, reemplazar

Primero elige los productos: fíltralos en la pestaña Filtros (Filters) o marca sus filas. La línea La edición en masa se aplicará a: (Bulk editing will be applied to:) sobre el formulario masivo te indica qué conjunto cambiará la ejecución. Después marca la fila SKU en la pestaña Edición en masa, escribe el valor, elige un comportamiento y haz clic en Realizar edición en masa (Do Bulk Edit). Para un producto con el SKU AB-100:

ComportamientoQué haceValorResultado
añadir al final (append)añade el texto después del SKU actual-EUAB-100-EU
añadir al principio (prepend)añade el texto antesSHOP-SHOP-AB-100
nuevo (new)reemplaza todo el SKUX-{ID}X-4821
reemplazar (replace)reemplaza una parte del SKU por el reemplazar por texto (replace to text)100 por 200AB-200

reemplazar es un auténtico buscar y reemplazar dentro del SKU. Para convertir BSO-AC-PP40, BSO-LON-PP40 y el resto en ...-DD40, filtra el SKU con CONTIENE (LIKE) PP40 y reemplaza PP40 por DD40. Para las variaciones, activa variaciones (variations) y haz clic en seleccionar todas las variaciones (select all variations) antes de la ejecución, de modo que solo queden marcadas las filas de variaciones coincidentes; la sección sobre duplicados explica por qué. Cambia todas las apariciones del texto en un SKU, así que busca una parte que no pueda aparecer dos veces: -PP40 en lugar de 40. Deja reemplazar por texto vacío para borrar el texto. Elige misma mayúsculas/minúsculas (same case) o ignorar mayúsculas/minúsculas (ignore case) junto a él. El comportamiento no admite comodines ni posiciones: puede eliminar o reemplazar una letra, pero no moverla a otro lugar del SKU.

En un producto sin SKU, añadir al final y añadir al principio simplemente escriben tu texto. Una variación sin SKU propio es distinta: el editor lee el SKU que WooCommerce muestra para ella, que es el del padre. Por eso, añadir -XL al final de una variación así da AB-100-XL, un buen punto de partida para los SKU de variaciones.

Variables: {SKU}, {ID}, {PARENT_SKU} y más

El desplegable variable (variable) junto al valor inserta marcadores que se rellenan para cada producto: {TITLE}, {ID}, {SKU}, {MENU_ORDER}, {PARENT_ID}, {PARENT_TITLE}, {PARENT_SKU}, {REGULAR_PRICE} y {SALE_PRICE}. También puedes escribir {attribute:pa_size} o {meta:your_meta_key}. En un producto que no es una variación, los marcadores del padre dan los valores del propio producto.

  • {SKU} es el SKU actual, así que nuevo con {SKU}-v2 hace lo mismo que añadir al final con -v2. Es útil en medio de un valor: EU-{SKU}-2026.
  • {ID} es único por definición. añadir al final con -{ID} hace únicos todos los SKU de la ejecución, la salida más rápida cuando hay duplicados.
  • Los marcadores también funcionan en el texto de búsqueda de reemplazar. Así se elimina el SKU de dentro de los títulos de producto; consulta edición masiva de títulos de producto.

SKU de variaciones a partir del SKU del padre y los atributos

Filtra los productos variables que necesites, activa variaciones en el panel de herramientas, y la edición masiva se aplicará a sus variaciones mientras se ignoran los padres. Después, en la fila SKU con nuevo:

{PARENT_SKU}-{attribute:pa_size}

Una sudadera HOOD obtiene HOOD-S, HOOD-M, HOOD-XL. Sustituye pa_size por el slug de tu atributo: los atributos globales empiezan por pa_, y un atributo personalizado del producto se escribe como su nombre en minúsculas, con guiones en lugar de espacios. El valor insertado es el nombre del término tal como lo muestra la tienda, con mayúsculas y espacios: Dark Blue da HOOD-Dark Blue. Límpialo con una segunda ejecución, reemplazar un espacio por -, y si quieres mayúsculas, una tercera ejecución con nuevo y la variable {DO_STRING_UP} (MAYÚSCULAS (STRING UP)), que representa el valor actual en mayúsculas.

Dos atributos necesitan dos ejecuciones. Solo se lee un marcador de atributo por valor: {PARENT_SKU}-{attribute:pa_size}-{attribute:pa_color} pierde ambos atributos. Ejecuta primero nuevo con {PARENT_SKU}-{attribute:pa_size} y después añadir al final con -{attribute:pa_color}.

Si solo necesitas SKU de variaciones únicos, {PARENT_SKU}-{ID} lo consigue en una sola ejecución; la FAQ sobre SKU para variaciones lo muestra también con edición vinculada (binded editing). Para dar SKU nuevos solo a algunas variaciones, por ejemplo una talla, consulta filtrar variaciones por atributo.

Números de SKU secuenciales y sus límites

Un valor que termina en dígitos y un signo más, como 10300+, 10300+5 o ABC-10300+, es un contador: la sintaxis se describe en cómo generar SKU secuenciales. En la 2.2.4 el contador se comporta así:

  • Se incrementa antes de cada producto. En la pestaña Edición en masa, 10300+ da 10301, 10302 y así sucesivamente; introduce 10299+ para empezar en 10300. Con la edición vinculada, la celda que editas conserva el número inicial y las demás filas marcadas continúan a partir de él.
  • Se reinicia con cada lote. El editor envía los productos al servidor en lotes del tamaño de Número de entradas procesadas a la vez (Number of posts processed at a time) (pestaña Ajustes (Settings), 30 por defecto, como máximo 100), y cada lote vuelve a contar desde el principio. El primer producto del segundo lote recibe un número que ya está en uso, y la ejecución se detiene por ese duplicado. Mantén cada ejecución dentro de un lote: como máximo esa cantidad de filas marcadas, o esa cantidad de productos filtrados (en modo variaciones cada producto lleva todas sus variaciones a su lote). Empieza la siguiente ejecución donde terminó la última.
  • Cuenta a lo largo de toda la ejecución. No se reinicia por producto: al añadir al final -0+ a las variaciones de HOOD que no tienen SKU propio se obtiene HOOD-1, HOOD-2, HOOD-3, y el siguiente producto continúa con -4. Los productos filtrados se numeran por orden de ID de producto, las filas marcadas en el orden en que las marcaste.

Si necesitas un SKU literal que termine en dígitos y un signo más, desactiva el contador:

// BEAR: treat "10300+" in the SKU row as plain text, not as a counter.
// Child theme functions.php or a code snippets plugin.
add_filter( 'woobe_sku_auto_increment', '__return_false' );

Evitar SKU duplicados en WooCommerce

WooCommerce exige que cada SKU sea único entre los productos y variaciones que no están en la papelera, y rechaza un duplicado con SKU no válido o duplicado (Invalid or duplicated SKU.) En la 2.2.4, BEAR escribe el nuevo SKU en la base de datos antes de que WooCommerce lo compruebe. Por eso un duplicado permanece en el campo SKU del producto, se omite el resto del guardado y la petición falla: una ejecución masiva se detiene con un error, y los demás productos de ese lote no se modifican. Las causas típicas son un único valor fijo con nuevo para muchos productos, un contador sobre más de un lote, y reemplazar sobre variaciones sin SKU propio, que reciben el SKU del padre cuando el texto buscado no está en él: el editor parte del SKU que WooCommerce muestra para ellas, y el padre ya tiene ese.

Activa el control de SKU propio de BEAR para detener los duplicados antes de que se escriban:

/*
 * BEAR: refuse a SKU that another product or variation already has.
 * Child theme functions.php or a code snippets plugin.
 */
add_filter( 'woobe_init_sku_control', '__return_true' );

Con el control activado, BEAR busca el nuevo SKU entre todos los productos y variaciones, incluidos los de la papelera. Si otro producto lo tiene, no se escribe nada: una celda muestra ¡Error! El SKU ya existe (Error! SKU already exists), y una ejecución masiva omite ese producto y continúa. Si un SKU parece libre pero se rechaza, mira en la papelera. En la 2.2.4 el mensaje aparece también cuando se guarda una celda con el SKU que ya tiene; en ese caso no cambia nada.

Para reparar un duplicado dejado por una ejecución anterior, busca el SKU con EXACTO (EXACT): aparecen ambos productos. Dale al incorrecto un SKU nuevo en su celda; cuando eso funcione, WooCommerce vuelve a guardar el producto por completo. Buscar variaciones por SKU explica qué filas muestra una búsqueda así.

SKU de productos duplicados

El botón de duplicar del panel de herramientas usa la duplicación propia de WooCommerce, así que una copia de AB-100 obtiene AB-100-1 (o -2 si ese está en uso), y las variaciones de un producto variable copiado que tienen SKU propio reciben el mismo sufijo. Cámbialos después con una edición masiva, o deja que WooCommerce aplique tu propio patrón al hacer la copia:

/*
 * Duplicated products and their variations get "COPY-AB-100" instead of "AB-100-1".
 * Child theme functions.php or a code snippets plugin.
 */
add_action( 'woocommerce_product_duplicate_before_save', function ( $duplicate, $original ) {
    $sku = $original->get_sku( 'edit' );
    if ( '' !== $sku ) {
        // WooCommerce adds -1, -2 ... only if COPY-AB-100 is taken as well
        $duplicate->set_sku( wc_product_generate_unique_sku( 0, 'COPY-' . $sku ) );
    }
}, 10, 2 );

Comprueba el resultado antes de la siguiente ejecución

  • Mira la columna SKU con variaciones activado. Una variación que sigue mostrando el SKU de su padre no tiene uno propio; filtra el SKU con Vacío (Empty) para listar esas variaciones.
  • Busca algunos de los nuevos SKU con EXACTO. Si falta alguno, indica una ejecución que se detuvo por un duplicado: activa el control de SKU y vuelve a ejecutar el resto.
  • La pestaña Historial (History) puede revertir una ejecución de SKU. No puede restaurar el SKU vacío de una variación que no tenía ninguno: registra el SKU del padre que mostraba el editor, así que prueba primero las ejecuciones de variaciones en un solo producto.
  • Para miles de productos, mantén un tamaño de lote adecuado para tu servidor; consulta edición masiva de miles de productos.

Si una ejecución de SKU se comporta de forma distinta a lo descrito aquí, publica el comportamiento, el valor y un SKU de ejemplo en el foro de soporte de BEAR.