BEAR - WooCommerce Bulk Editor and Products Manager Professional

Cómo solucionar que la descripción no se actualice al usar BEAR con Elementor

Si buscas cómo editar descripciones en masa en lugar de solucionar un problema de guardado, consulta edición masiva de descripciones de productos de WooCommerce.

Si usas BEAR (Bulk Editor) para actualizar descripciones de productos, pero los cambios no aparecen en el frontend al usar el constructor de páginas Elementor, esta guía resolverá el problema.

El problema

Síntoma: Cuando editas descripciones de productos a través de BEAR, los cambios se guardan correctamente en la base de datos, pero el frontend sigue mostrando el contenido antiguo. Qué está pasando: Elementor tiene un sistema de caché interno que almacena CSS y datos de página para acelerar tu sitio web. Cuando BEAR actualiza la descripción del producto, el dato se guarda correctamente, pero Elementor sigue mostrando la versión en caché de la página hasta que esta se borra o se regenera manualmente. Esto NO es un fallo de BEAR ni de Elementor: es un problema de compatibilidad entre la edición masiva y el mecanismo de caché de Elementor. Elementor no detecta automáticamente cuándo se actualizan productos mediante operaciones masivas, por lo que su caché queda desactualizada. Para el caso general, donde los callbacks de guardado de cualquier plugin ralentizan o interfieren con una edición masiva, consulta aislar plugins durante las ediciones masivas.

Por qué esto solo ocurre con Elementor

En productos normales (sin Elementor): Los cambios aparecen de inmediato porque WordPress muestra el contenido directamente desde la base de datos. En páginas creadas con Elementor: Elementor genera archivos CSS y HTML estáticos almacenados en /wp-content/uploads/elementor/css/. Estos archivos en caché se sirven a los visitantes en lugar de consultar la base de datos cada vez. Esto acelera enormemente la carga de páginas, pero implica que las actualizaciones no aparecen hasta que se borra la caché.

La solución

Añade código al functions.php de tu tema que borre automáticamente la caché de Elementor cada vez que un producto se actualiza a través de BEAR.

Solución 1: Borrar toda la caché de Elementor (recomendado)

Esta solución borra la caché global de Elementor después de cada actualización de producto. Es simple, eficaz y funciona en todos los escenarios. Añade este código al functions.php de tu tema hijo:
/**
 * Clear Elementor cache after product update via BEAR
 * This ensures description changes appear immediately on frontend
 */
add_action('woocommerce_update_product', 'woobe_clear_elementor_cache', 10, 1);

function woobe_clear_elementor_cache($product_id) {
    // Check if Elementor is active
    if (!did_action('elementor/loaded')) {
        return;
    }

    // Clear Elementor global cache
    if (class_exists('\Elementor\Plugin')) {
        \Elementor\Plugin::instance()->files_manager->clear_cache();
    }
}
Cómo funciona:
  • Se activa cada vez que WooCommerce actualiza un producto (incluidas las actualizaciones de BEAR)
  • Comprueba si Elementor está activo
  • Borra toda la caché de CSS y datos de Elementor
  • Elementor regenera automáticamente la caché en la siguiente carga de página
Ventajas:
  • Simple y fiable
  • Funciona para todos los productos
  • No requiere lógica específica por producto
Desventajas:
  • Borra la caché de todas las páginas, no solo la del producto actualizado
  • Ligero impacto en el rendimiento en sitios grandes con muchas páginas de Elementor
 

Solución 2: Regenerar el CSS solo para un producto específico

Esta solución solo regenera el CSS del producto específico que se está actualizando. Más eficiente para sitios grandes. Añade este código al functions.php de tu tema hijo:
/**
 * Regenerate Elementor CSS for specific product after update
 * More efficient - only regenerates CSS for the updated product
 */
add_action('woocommerce_update_product', 'woobe_regenerate_product_elementor_css', 10, 1);

function woobe_regenerate_product_elementor_css($product_id) {
    // Check if Elementor is active
    if (!did_action('elementor/loaded')) {
        return;
    }

    if (!class_exists('\Elementor\Plugin')) {
        return;
    }

    // Check if this product page is built with Elementor
    $document = \Elementor\Plugin::$instance->documents->get($product_id);
    
    if ($document AND $document->is_built_with_elementor()) {
        // Regenerate CSS for this specific product
        $css_file = \Elementor\Core\Files\CSS\Post::create($product_id);
        $css_file->update();
        
        // Clear product cache
        delete_post_meta($product_id, '_elementor_css');
    }
}
Cómo funciona:
  • Se activa cuando se actualiza un producto
  • Comprueba si la página del producto usa Elementor
  • Regenera el CSS solo para ese producto específico
  • Más eficiente que borrar toda la caché
Ventajas:
  • Solo afecta al producto actualizado
  • Mejor rendimiento en sitios grandes
  • No borra la caché de páginas no relacionadas
Desventajas:
  • Código ligeramente más complejo
  • Solo funciona si la página del producto está creada con Elementor
 

Solución 3: Borrar la caché después de las operaciones masivas (eficiente para ediciones masivas)

Si haces ediciones masivas y actualizas cientos de productos a la vez, no querrás borrar la caché después de cada producto individual. Esta solución borra la caché una sola vez, al terminar toda la operación masiva. Añade este código al functions.php de tu tema hijo:
/**
 * Clear Elementor cache once after bulk edit completes
 * Most efficient for bulk operations
 */
add_action('woobe_after_bulk_edit', 'woobe_clear_elementor_after_bulk');

function woobe_clear_elementor_after_bulk() {
    // Check if Elementor is active
    if (!did_action('elementor/loaded')) {
        return;
    }

    // Clear all Elementor cache
    if (class_exists('\Elementor\Plugin')) {
        \Elementor\Plugin::instance()->files_manager->clear_cache();
    }
}
Cómo funciona:
  • Usa el hook woobe_after_bulk_edit de BEAR
  • Solo borra la caché UNA VEZ después de actualizar todos los productos
  • Mucho más eficiente que borrarla después de cada producto
Ventajas:
  • Mejor rendimiento para operaciones masivas
  • La caché se borra solo una vez por edición masiva
  • Reduce significativamente la carga del servidor
Desventajas:
  • Solo funciona para operaciones masivas
  • No borra la caché para actualizaciones de un solo producto
 

Solución 4: Enfoque combinado (lo mejor de ambos mundos)

Combina las soluciones 1 y 3 para obtener el mejor equilibrio entre eficiencia y cobertura. Añade este código al functions.php de tu tema hijo:
/**
 * Combined approach: Clear cache after bulk operations
 * and for individual product updates
 */

// Track if we're in a bulk operation
global $woobe_bulk_operation_active;
$woobe_bulk_operation_active = false;

// Set flag when bulk operation starts
add_action('woobe_before_bulk_edit', function() {
    global $woobe_bulk_operation_active;
    $woobe_bulk_operation_active = true;
});

// Clear cache once after bulk operation completes
add_action('woobe_after_bulk_edit', function() {
    global $woobe_bulk_operation_active;
    $woobe_bulk_operation_active = false;
    
    if (!did_action('elementor/loaded')) {
        return;
    }

    if (class_exists('\Elementor\Plugin')) {
        \Elementor\Plugin::instance()->files_manager->clear_cache();
    }
});

// Clear cache for individual product updates (not during bulk)
add_action('woocommerce_update_product', function($product_id) {
    global $woobe_bulk_operation_active;
    
    // Skip if we're in a bulk operation (cache will be cleared after)
    if ($woobe_bulk_operation_active) {
        return;
    }
    
    if (!did_action('elementor/loaded')) {
        return;
    }

    if (class_exists('\Elementor\Plugin')) {
        \Elementor\Plugin::instance()->files_manager->clear_cache();
    }
}, 10, 1);
Cómo funciona:
  • Registra si hay una operación masiva en curso
  • Durante las operaciones masivas: solo borra la caché una vez al final
  • Para actualizaciones individuales: borra la caché de inmediato
  • Lo mejor de ambos mundos

¿Qué solución deberías usar?

Elige la Solución 1 (Borrar toda la caché) si:

  • Tienes un sitio pequeño o mediano
  • Editas productos individualmente la mayor parte del tiempo
  • Quieres la solución más simple
  • El rendimiento no es una preocupación crítica
 

Elige la Solución 2 (Producto específico) si:

  • Tienes un sitio grande con muchas páginas de Elementor
  • Solo usas Elementor para páginas de productos específicas
  • Quieres minimizar el impacto en el rendimiento
  • Te sientes cómodo con un código algo más complejo
 

Elige la Solución 3 (Solo masivo) si:

  • Usas principalmente la edición masiva
  • Rara vez actualizas productos individuales
  • El rendimiento es crítico
  • Realizas operaciones por lotes grandes (100+ productos)
 

Elige la Solución 4 (Combinada) si:

  • Usas tanto la edición individual como la masiva
  • Quieres un rendimiento óptimo en todos los escenarios
  • Tienes un sitio grande
  • Quieres la solución más completa

Cómo probar tu solución

Después de añadir el código:
  1. Borra todas las cachés (navegador, WordPress, servidor) para empezar de cero
  2. Edita una descripción de producto a través de BEAR
  3. Abre la página del producto en el frontend (no en el editor de Elementor)
  4. Haz una recarga forzada del navegador (Ctrl+F5 o Cmd+Shift+R)
  5. Verifica que el cambio aparece en el frontend
Si los cambios siguen sin aparecer:
  • Asegúrate de estar usando un tema hijo
  • Verifica que Elementor esté activo: revisa Plugins → Plugins instalados
  • Comprueba si hay errores de PHP: activa WP_DEBUG en wp-config.php
  • Prueba primero la Solución 1 (la más simple y fiable)

Notas importantes sobre la caché de Elementor

Qué almacena en caché Elementor:

  • Archivos CSS: almacenados en /wp-content/uploads/elementor/css/
  • Estructura de la página: disposición de contenido dinámico
  • Datos de los widgets: configuraciones de elementos de Elementor

Qué hace el borrado de caché:

  • Elimina los archivos CSS antiguos
  • Obliga a Elementor a regenerar los estilos
  • Aplica los últimos cambios de contenido

Qué NO hace el borrado de caché:

  • No elimina tu contenido - todos los datos del producto permanecen intactos
  • No rompe el formato de Elementor - los diseños y disposiciones se conservan
  • No elimina los diseños de Elementor - solo se borran los archivos de caché, no los datos de diseño

Consideraciones de rendimiento:

  • Después de borrar la caché, la primera carga de página puede ser algo más lenta
  • Elementor regenera los archivos CSS automáticamente en la primera visita
  • Las siguientes visitas volverán a ser rápidas
  • Esto es un comportamiento normal

Solución de problemas

Los cambios siguen sin aparecer después de añadir el código:

Problema: El formato de Elementor desapareció Solución: Es posible que hayas eliminado por accidente el meta _elementor_data. No uses delete_post_meta($product_id, '_elementor_data') en tu código. Elimina únicamente _elementor_css. Problema: El código no parece ejecutarse Solución:
  • Verifica que estás editando en un tema hijo
  • Revisa los registros de errores de PHP por si hay errores de sintaxis
  • Asegúrate de que los nombres de los hooks sean correctos
  • Prueba primero con la Solución 1
Problema: La caché se borra pero los cambios siguen sin verse Solución:
  • Borra la caché de tu navegador (Ctrl+F5)
  • Borra cualquier plugin de caché de WordPress (WP Rocket, W3TC, etc.)
  • Borra la caché a nivel de servidor (revisa el panel de tu hosting)
  • Borra la caché de CDN si usas Cloudflare o similar
Problema: El sitio va más lento después de borrar la caché Solución:
  • Esto es normal - la caché se está regenerando
  • La primera carga de página será más lenta
  • El rendimiento mejora una vez que la caché se reconstruye
  • Considera usar la Solución 3 o la 4 para un mejor rendimiento

Conflictos con plugins de caché:

Si usas otros plugins de caché (WP Rocket, W3 Total Cache, LiteSpeed Cache), puede que también necesites borrar su caché:
// Example: Also clear WP Rocket cache
add_action('woocommerce_update_product', function($product_id) {
    // Clear Elementor cache (from solutions above)
    if (class_exists('\Elementor\Plugin')) {
        \Elementor\Plugin::instance()->files_manager->clear_cache();
    }
    
    // Also clear WP Rocket cache
    if (function_exists('rocket_clean_post')) {
        rocket_clean_post($product_id);
    }
}, 10, 1);

Buenas prácticas

  1. Usa siempre un tema hijo - las actualizaciones del tema borrarán los cambios hechos al tema padre
  2. Haz una copia de seguridad antes de añadir código - siempre haz una copia de seguridad de functions.php antes de editarlo
  3. Prueba primero en un entorno de pruebas - prueba el código en un sitio de staging si es posible
  4. Monitoriza el rendimiento - usa herramientas como GTmetrix para vigilar la velocidad del sitio
  5. Borra todas las cachés al probar - navegador, WordPress, servidor y CDN
  6. Elige la solución adecuada - equilibra simplicidad frente a rendimiento según tus necesidades

Alternativa: borrado manual de caché

Si prefieres no añadir código, puedes borrar manualmente la caché de Elementor después de una edición masiva:
  1. Después de actualizar productos en BEAR
  2. Ve a Elementor → Tools
  3. Haz clic en Regenerate Files & Data en la pestaña "General"
  4. Haz clic en Save Changes
  5. Actualiza las páginas de tus productos
Esto funciona, pero requiere una acción manual después de cada operación de edición masiva.

Resumen

El problema: BEAR actualiza las descripciones en la base de datos, pero Elementor muestra la versión en caché La causa: la caché interna de Elementor no detecta automáticamente las actualizaciones masivas La solución: añadir código para borrar automáticamente la caché de Elementor después de actualizar los productos Mejor solución simple: usa la Solución 1 (borrar toda la caché después de cada actualización) Mejor solución de rendimiento: usa la Solución 4 (enfoque combinado) Código clave:
\Elementor\Plugin::instance()->files_manager->clear_cache();
Esta única línea borra la caché de Elementor y fuerza su regeneración en la siguiente carga de página.