BEAR - WooCommerce Bulk Editor and Products Manager Professional

El precio de WooCommerce no se actualiza en la tienda tras una edición masiva

El editor masivo dice Guardado (Saved.), la pantalla de edición del producto muestra el valor nuevo, y la tienda sigue mostrando el precio antiguo, la descripción antigua o variaciones que no se pueden seleccionar. Que el precio de WooCommerce no se actualice en la tienda tras una edición masiva casi nunca significa que la edición se haya perdido. Significa que algo entre la base de datos y la página que ve el visitante muestra una copia más antigua, o un valor distinto. Confirma dónde está realmente el valor nuevo y recorre después las capas siguientes en orden.

Primero, comprueba que el cambio llegó a la base de datos

Abre uno de los productos afectados en Productos (Products) en wp-admin, el editor de productos normal de WooCommerce, no BEAR. Lo que muestra es lo que está guardado en la base de datos.

  • El editor de productos también muestra el valor antiguo. El cambio no se guardó, y las cachés no son el problema. Sigue en su lugar los cambios del editor masivo no se guardan.
  • El editor de productos muestra el valor nuevo. Los datos son correctos. Todo lo que sigue trata de la visualización.

La pestaña Historial (History) te dice qué tocó realmente una operación masiva. Cada ejecución masiva se guarda con la lista de campos que participaron en ella, así que también puedes leerla directamente de la base de datos (sustituye wp_ por el prefijo de tus tablas):

SELECT bulk_key, set_of_keys, products_count, state, started
FROM wp_woobe_history_bulk
ORDER BY id DESC
LIMIT 10;

Si set_of_keys de tu ejecución lista solo ["sale_price"], BEAR escribió el precio rebajado y nada más. Tenlo presente para la sección sobre variaciones más abajo.

Por último, mira la tienda en una ventana privada del navegador en la que no hayas iniciado sesión. Las cachés de página suelen omitir a los administradores con sesión iniciada, así que la tienda puede verse bien para ti y mal para todos los visitantes, o al revés.

Cachés entre la base de datos y la página de la tienda

Cuando BEAR guarda un producto, vacía las mismas cachés que WooCommerce vacía cuando pulsas Actualizar (Update) en el editor de productos: los transients del producto y las entradas de la caché de objetos del producto, y las de su producto padre cuando la fila editada es una variación. Los precios, el inventario y las demás propiedades de WooCommerce se guardan a través del propio objeto de producto de WooCommerce, de modo que el _price almacenado y el rango de precios de un producto variable se recalculan de la forma habitual.

Lo que BEAR no vacía son las cachés que están fuera de WooCommerce:

  • Cachés de página. Los plugins de caché, las cachés de servidor como Varnish o la caché FastCGI de Nginx, y las CDN como Cloudflare almacenan el HTML terminado de las páginas de producto y de categoría. Muchas purgan una página cuando se guarda una entrada en el editor; una edición masiva cambia cientos de productos de una vez, y no todas las cachés reaccionan a eso. Purga toda la caché de páginas, y la caché de la CDN, después de una edición masiva grande.
  • Cachés de objetos persistentes. Redis o Memcached guardan también datos de otros plugins y del tema. Si la tienda sigue mostrando valores antiguos después de purgar la caché de páginas, vacía la caché de objetos desde el panel del hosting o desde el plugin de caché.
  • Herramientas de WooCommerce. En WooCommerce > Estado > Herramientas (WooCommerce > Status > Tools), ejecuta Borrar transients (Clear transients), y después Regenerar (Regenerate) junto a Tablas de búsqueda de productos (Product lookup tables) y junto a Regenerar la tabla de búsqueda de atributos de productos (Regenerate the product attributes lookup table). Las tablas de búsqueda contienen copias de precios, inventario y atributos que WooCommerce usa para ordenar por precio, para el filtro de precios y para el filtrado por atributos, así que una tabla obsoleta se nota como una ordenación o un filtrado incorrectos incluso cuando la página del producto es correcta.
  • Tu propio navegador. Una recarga forzada lo descarta; restablecer la caché de páginas en el navegador enumera las teclas.

El precio está guardado, pero la tienda muestra otro

Si ninguna caché lo explica, la tienda está mostrando un precio calculado a partir del guardado, o tomado de otro sitio. BEAR escribe los precios de WooCommerce guardados; no decide lo que muestra el escaparate.

Lo que muestra la tiendaDe dónde viene
El precio normal aunque haya un precio rebajadoLa oferta está programada: con un Inicio del periodo de oferta (Sale time from) futuro, WooCommerce sigue vendiendo al precio normal hasta esa fecha. Consulta programar precios rebajados en masa.
Un precio con o sin impuestos que difiere del editorLos ajustes de visualización de impuestos en WooCommerce > Ajustes > Impuestos (WooCommerce > Settings > Tax) (Mostrar precios en la tienda (Display prices in the shop)) añaden o quitan los impuestos para mostrarlos.
Un precio distinto en otra monedaUn conmutador de monedas convierte el precio, o usa precios fijos por moneda guardados en sus propios campos. Consulta edición masiva de precios por moneda.
Un precio distinto para clientes mayoristas o ciertos rolesLos plugins de precios por rol y de precios mayoristas guardan sus propios precios. Consulta edición masiva de precios mayoristas.
El precio antiguo en otro idiomaCada traducción es un producto aparte con su propio precio. Consulta edición masiva de precios en todos los idiomas de WPML.
Un rango de precios que ignora el precio que diste al padreUn producto variable vende con los precios de sus variaciones; edita las variaciones. Consulta por qué el campo de precio del producto variable está desactivado.

Los plugins de descuentos y de precios dinámicos pertenecen al mismo grupo: cambian el precio mostrado sobre la marcha. Desactívalos un momento en una copia de pruebas para ver el precio almacenado.

La descripción no se actualiza: constructores de páginas y plantillas del tema

BEAR escribe la descripción del producto en el campo de contenido estándar de WordPress y la descripción corta en el extracto, los mismos campos que usa el editor de productos de WooCommerce. Una página que imprime otra cosa no cambiará.

Elementor

Una página de producto creada con Elementor no lee el campo de contenido. Elementor guarda todo el diseño, incluido el texto que escribiste en un widget Editor de texto, en su propio campo meta _elementor_data. Si la descripción de la página es texto estático dentro de un widget, ningún cambio hecho fuera de Elementor aparecerá nunca ahí. La solución duradera es hacer que el widget lea el producto: en el editor de Elementor, haz clic en el widget de la descripción, abre el icono de etiquetas dinámicas de su campo de texto y elige Contenido del producto (Product Content) (Descripción corta del producto (Product Short Description) para el texto corto), y publica. Las etiquetas dinámicas forman parte de Elementor Pro. El estilo del widget se mantiene, y desde entonces cada edición de BEAR aparece en la página.

Cuando el widget ya lee el producto pero la página sigue viéndose antigua, la causa son los archivos generados por Elementor: usa Elementor > Herramientas > Regenerar archivos y datos (Elementor > Tools > Regenerate Files & Data) (Regenerar CSS y datos (Regenerate CSS & Data) en versiones anteriores), que es independiente de cualquier plugin de caché. La descripción no se actualiza con Elementor incluye código que vacía esa caché automáticamente cada vez que se actualiza un producto.

Divi y otros constructores

Cuando Usar Divi Builder (Use the Divi Builder) está activado en un producto, Divi guarda el diseño del producto en el campo de descripción. BEAR muestra entonces código de diseño de Divi en la columna descripción (Description), y reemplazarlo reemplaza el diseño. En los productos cuya descripción gestionas en masa, mantén el constructor desactivado en el propio producto y diseña la página del producto con una plantilla que imprima la descripción de WooCommerce. Otros constructores guardan el texto en su propio campo meta; el constructor Avion es uno de ellos, y la FAQ de Avion muestra cómo asociar ese campo en BEAR.

Temas y otros plugins

Algunos temas imprimen un subtítulo o una segunda descripción desde su propio campo meta, y los plugins de productos relacionados, insignias o pestañas personalizadas guardan sus datos en campos meta y a menudo almacenan en caché su salida. Si un elemento de la página ignora tu cambio, averigua qué campo lee realmente, como se describe en encontrar la clave meta de un producto, y edita ese campo. Si el campo es correcto y la salida sigue siendo antigua, ese plugin mantiene su propia caché.

Variaciones que no se pueden seleccionar o que desaparecen tras una edición masiva

Tras editar precios en productos variables aparecen dos síntomas: la página del producto muestra solo el rango de precios y Por favor, selecciona algunas opciones del producto antes de añadir este producto a tu carrito. (Please select some product options before adding this product to your cart.) después de elegir una talla, o las variaciones y los atributos desaparecen del producto por completo.

Empieza por el editor de productos. En la pestaña Atributos (Attributes), cada atributo que usan las variaciones debe estar presente con Usado para variaciones (Used for variations) marcado. En la pestaña variaciones (Variations), cada variación debe estar activada, tener un precio y tener un valor para cada atributo. Una variación sin precio no se puede comprar, y un padre sin sus atributos no muestra ninguna opción, que es también el motivo habitual por el que las variaciones creadas en masa no aparecen en la tienda.

Si la parte de administración está completa, el escaparate está leyendo datos obsoletos: borra los transients y regenera las dos tablas de búsqueda como se describe arriba, vacía la caché de objetos, purga la caché de páginas y prueba con un tema por defecto como Storefront.

Si los atributos han desaparecido de verdad, compara con el Historial. Un cambio masivo del precio rebajado escribe solo el precio rebajado; no toca los atributos, los valores de atributos de las variaciones ni los términos del producto. Pero cada guardado de un producto dispara los hooks de guardado habituales de WordPress y WooCommerce, y un plugin que los escuche puede reaccionar a un guardado que no vino de la pantalla de edición del producto borrando datos que esperaba encontrar en ese formulario. Los plugins de muestras, las herramientas de variaciones, los plugins de importación y sincronización y los generadores de feeds son los sospechosos habituales. Revierte la operación en el Historial, repítela después en una copia de pruebas con solo WooCommerce y BEAR activos y activa los demás plugins uno a uno. Aislar plugins durante las ediciones masivas muestra cómo mantener a un plugin así fuera de las peticiones de BEAR de forma definitiva.

Si la tienda sigue mostrando el valor antiguo

  1. El editor de productos de wp-admin muestra el valor nuevo; si no, es un problema de guardado.
  2. El Historial lista la operación con los campos que esperabas y nada más.
  3. La caché de páginas, la caché de la CDN y la caché de objetos están purgadas, y la tienda se ha comprobado en una ventana privada.
  4. Se han ejecutado Borrar transients y las dos herramientas de tablas de búsqueda en WooCommerce > Estado > Herramientas.
  5. En el caso de los precios, se han descartado las ofertas programadas, la visualización de impuestos, la moneda, los precios por rol y las traducciones.
  6. El elemento que muestra la descripción lee el campo de WooCommerce, no una copia de un constructor o del tema.
  7. Con solo WooCommerce, BEAR y un tema por defecto en una copia de pruebas, el cambio se ve.

Si todo eso se cumple y la tienda sigue mostrando los datos antiguos, abre un tema en el foro de soporte de BEAR con el ID del producto, el campo, lo que muestra el editor de productos y lo que muestra la tienda.