BEAR - WooCommerce Bulk Editor and Products Manager Professional

Título de variación en WooCommerce: incluir atributos como talla y color

El título de una variación de WooCommerce no siempre incluye los atributos. Un producto muestra sus variaciones como Hoodie - Red, XL, y el siguiente muestra Jacket en todas las filas, en el editor masivo, en el carrito y en los pedidos, sin nada que distinga las opciones. No es una importación rota. WooCommerce construye por sí mismo el título de cada variación, y tiene reglas para omitir los valores de los atributos. A continuación verás cómo se construye el título, el único filtro que hace que incluya los atributos, cómo ver los valores de cada variación en el editor masivo y por qué el título de una variación no se puede escribir a mano.

Cómo construye WooCommerce el título de una variación

Una variación no tiene un campo de nombre que rellenes tú. Cada vez que WooCommerce guarda una variación, y cada vez que carga una, calcula el título a partir de dos partes: el título del producto padre y los valores de los atributos de la variación, unidos con " - ". Si el título almacenado difiere del calculado, por ejemplo porque se ha renombrado el padre, WooCommerce escribe el título nuevo en la base de datos.

Los valores de los atributos solo se añaden cuando las reglas actuales de WooCommerce lo permiten:

  • La variación tiene menos de tres atributos. Con Color, Size y Material, el título es simplemente el título del padre.
  • Cuando hay dos atributos, ninguno de sus nombres puede contener un guion. WooCommerce lee el nombre interno del atributo: un atributo global Shoe size con el slug shoe-size se guarda como pa_shoe-size, y un atributo personalizado escrito como Sistema de activacion se guarda como sistema-de-activacion. Cualquier nombre de atributo de dos o más palabras lleva guiones, así que Color más Shoe size da títulos sin valores.
  • Una variación configurada como Cualquier Size (Any Size) no tiene ningún valor de talla que añadir.

Por eso dos productos que parecen idénticos pueden comportarse de forma distinta: uno tiene Color y Size, el otro Color y Frame size.

Hacer que el título de la variación incluya los atributos

Las reglas terminan en un filtro, woocommerce_product_variation_title_include_attributes, que decide el resultado. Si devuelve true, los valores se añaden al título de todas las variaciones, sea cual sea el número o el nombre de los atributos:

/*
 * Always add the attribute values to variation titles: "Hoodie - Red, XL".
 * Child theme functions.php or a code snippets plugin.
 */
add_filter( 'woocommerce_product_variation_title_include_attributes', '__return_true' );

Para mantener el comportamiento predeterminado de WooCommerce en las variaciones con muchos atributos y anular solo la regla del guion, decide en función del número de atributos:

add_filter( 'woocommerce_product_variation_title_include_attributes', function ( $include, $product ) {
    // Up to four attributes: always show their values in the title
    if ( count( $product->get_attributes() ) <= 4 ) {
        return true;
    }
    return $include;
}, 10, 2 );

Coloca el código en el functions.php del tema activo y, si ese tema es un tema hijo, en el archivo del tema hijo. El archivo de un tema padre se sustituye en cada actualización del tema, así que el plugin Code Snippets es el lugar más seguro cuando no mantienes un tema hijo. Si copias código de una página web traducida, revisa la puntuación: la traducción del navegador convierte comas y puntos y coma en caracteres que PHP no acepta.

El separador entre el título del padre y los valores tiene su propio filtro, woocommerce_product_variation_title_attributes_separator:

add_filter( 'woocommerce_product_variation_title_attributes_separator', function () {
    return ' / '; // Hoodie / Red, XL
} );

Las variaciones existentes lo recogen al cargarse

El filtro cambia la regla, no los títulos que ya están almacenados. WooCommerce compara y reescribe el título de una variación la próxima vez que la carga o la guarda: al abrir el producto en el editor de WooCommerce, cuando su página de producto muestra las opciones de variación o cuando las variaciones se muestran en BEAR. No hay que borrar nada ni volver a crearlo. Los pedidos conservan el nombre que tenía el artículo cuando se compró, así que los pedidos anteriores no cambian.

Cuando los valores forman parte del título, WooCommerce deja de repetirlos bajo el nombre del artículo en el carrito, en el checkout y en los correos del pedido, porque omite los atributos que ya aparecen en el nombre.

Títulos de variación en el editor masivo

Con el interruptor variaciones (variations) del panel de herramientas activado, BEAR muestra cada variación bajo su padre y construye el título de cada fila igual que WooCommerce, con los nombres de los atributos entre corchetes al final: Hoodie - Red, XL [color, size]. Añade los valores hasta con nueve atributos en lugar de dos, así que en el editor puedes ver valores donde el título almacenado no tiene ninguno. La regla del guion y el filtro anteriores también se aplican en BEAR, por lo que una fila de variación que muestra solo el título del padre tiene la misma causa, y la misma solución, que el carrito.

La celda TÍTULO (Title) de una fila de variación no se puede editar, y mientras el interruptor de variaciones está activado la pestaña Edición en masa (Bulk Edit) oculta la operación de título. No hay nada que guardar: cualquier título escrito en una variación se sustituiría por el calculado la próxima vez que WooCommerce la cargue. Edita en su lugar el título del padre; todas las variaciones lo siguen.

Ver el valor del atributo de cada variación en su propia columna

Cuando varios atributos alargan el título, muestra los atributos como columnas. Abre la pestaña Ajustes (Settings), escribe el nombre del atributo en el campo buscador de columnas ... (columns finder ...) (o pulsa Mostrar todas las columnas (Show all columns)), activa el atributo y pulsa Guardar todos los ajustes (Save all settings). Existen columnas de atributo para los atributos globales, los que se crean en Productos → Atributos.

En la fila del padre, la celda muestra y edita los términos que tiene el producto. En una fila de variación, la celda muestra el icono rojo de prohibido seguido del valor propio de la variación, por ejemplo [XL], de modo que puedes leer el valor y cambiar el precio en la misma fila. Por qué esa celda no es editable se explica en campos bloqueados en productos variables y variaciones. Para cambiar el valor en el que se basa una variación, usa la operación Swap o Attaching de Variaciones Operaciones masivas avanzadas (Variations Advanced Bulk Operations), como se muestra en cambiar un término de atributo por otro.

Renombrar o traducir los nombres de las variaciones

Como el título se calcula, se renombra a través de sus partes:

  • La parte del producto: cambia el título del padre, en la tabla o con una edición masiva de los productos padre. Las variaciones lo siguen.
  • La parte del valor: renombra el término una sola vez en Productos → Atributos → Configurar términos. Todas las variaciones basadas en él muestran el nombre nuevo, y también todas las páginas de producto. Los valores de los atributos personalizados (locales) son texto sin formato guardado dentro de cada producto; solo se pueden cambiar producto por producto, y es uno de los motivos para convertir los atributos personalizados en globales.
  • Todo el formato: el filtro woocommerce_product_variation_title recibe el título calculado, el producto, el título base y el sufijo, y puede devolver cualquier texto construido a partir de ellos.
  • Traducciones: un plugin multilingüe traduce el título del padre y los términos de los atributos, y WooCommerce construye con ellos los títulos de variación traducidos. Crear copias traducidas de los productos no es algo que haga BEAR.

Algunos temas y plugins añaden su propio campo «título de variación» o «nombre de variación» y lo muestran en la página de producto en lugar del título de WooCommerce. Ese campo es un campo meta de la variación. Si conoces su clave meta, añádela en la pestaña Campos meta (Meta Fields) y se convierte en una columna editable normal en las filas de variación.

Si los atributos siguen sin mostrarse

  • Comprueba que el fragmento se ejecuta: un error tipográfico lo detiene en silencio, y el código de un tema inactivo no se ejecuta en absoluto. Una línea error_log() temporal dentro de la función indica si se llama.
  • Abre en WooCommerce una de las variaciones afectadas y confirma que cada atributo tiene un valor, no Cualquier … (Any …).
  • Recarga la página del editor; los títulos se calculan al cargar las filas.
  • Un plugin que cambia los nombres de producto (feeds, traducciones, títulos personalizados) puede engancharse más tarde a woocommerce_product_variation_title y sobrescribir el resultado. Haz la prueba con ese plugin desactivado.

La respuesta corta a la misma pregunta también está en la FAQ sobre atributos visibles en las variaciones de un producto y no en las de otro. Para un caso que nada de esto explique, pregunta en el foro de soporte de BEAR.