Comment corriger la description qui ne se met pas à jour avec BEAR et Elementor
Si vous cherchez comment modifier des descriptions en masse plutôt que résoudre un problème d'enregistrement, consultez l'édition en masse des descriptions de produits WooCommerce.
Si vous utilisez BEAR (Bulk Editor) pour mettre à jour les descriptions de produits, mais que les modifications n'apparaissent pas sur le front-end lorsque vous utilisez le constructeur de pages Elementor, ce guide va résoudre le problème.Le problème
Symptôme : lorsque vous modifiez des descriptions de produits via BEAR, les changements sont bien enregistrés dans la base de données, mais le front-end continue d'afficher l'ancien contenu. Ce qui se passe : Elementor dispose d'un système de mise en cache interne qui stocke le CSS et les données de page pour accélérer votre site. Lorsque BEAR met à jour la description du produit, la donnée est bien enregistrée, mais Elementor continue d'afficher la version en cache de la page tant que son cache n'est pas manuellement vidé ou régénéré. Il ne s'agit PAS d'un bug de BEAR ou d'Elementor - c'est un problème de compatibilité entre l'édition en masse et le mécanisme de cache d'Elementor. Elementor ne détecte pas automatiquement quand des produits sont mis à jour via des opérations en masse, donc son cache reste obsolète. Pour le cas général, où les callbacks d'enregistrement de n'importe quelle extension ralentissent ou interfèrent avec une édition en masse, consultez l'isolation des extensions pendant les éditions en masse.Pourquoi cela n'arrive qu'avec Elementor
Sur les produits classiques (sans Elementor) : les changements apparaissent immédiatement car WordPress affiche le contenu directement depuis la base de données. Sur les pages construites avec Elementor : Elementor génère des fichiers CSS et HTML statiques stockés dans/wp-content/uploads/elementor/css/. Ces fichiers en cache sont servis aux visiteurs au lieu d'interroger la base de données à chaque fois. Cela accélère considérablement le chargement des pages, mais signifie que les mises à jour n'apparaissent pas tant que le cache n'est pas vidé.
La solution
Ajoutez du code au fichierfunctions.php de votre thème qui vide automatiquement le cache d'Elementor à chaque mise à jour d'un produit via BEAR.
Solution 1 : vider tout le cache d'Elementor (recommandé)
Cette solution vide le cache global d'Elementor après chaque mise à jour de produit. Elle est simple, efficace et fonctionne dans tous les scénarios. Ajoutez ce code aufunctions.php de votre thème enfant :
/**
* 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();
}
}
Comment ça marche :
- Se déclenche à chaque fois que WooCommerce met à jour un produit (y compris les mises à jour via BEAR)
- Vérifie si Elementor est actif
- Vide tout le cache CSS et de données d'Elementor
- Elementor régénère automatiquement le cache au prochain chargement de page
- Simple et fiable
- Fonctionne pour tous les produits
- Aucune logique spécifique au produit nécessaire
- Vide le cache de toutes les pages, pas seulement du produit mis à jour
- Léger impact sur les performances pour les grands sites avec beaucoup de pages Elementor
Solution 2 : régénérer le CSS uniquement pour un produit spécifique
Cette solution régénère le CSS uniquement pour le produit spécifique en cours de mise à jour. Plus efficace pour les grands sites. Ajoutez ce code aufunctions.php de votre thème enfant :
/**
* 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');
}
}
Comment ça marche :
- Se déclenche lorsqu'un produit est mis à jour
- Vérifie si la page produit utilise Elementor
- Régénère le CSS uniquement pour ce produit spécifique
- Plus efficace que de vider tout le cache
- N'affecte que le produit mis à jour
- Meilleures performances sur les grands sites
- Ne vide pas le cache des pages non concernées
- Code légèrement plus complexe
- Ne fonctionne que si la page produit est construite avec Elementor
Solution 3 : vider le cache après les opérations en masse (efficace pour les opérations en masse)
Si vous effectuez des éditions en masse et mettez à jour des centaines de produits à la fois, vous ne voulez pas vider le cache après chaque produit individuellement. Cette solution vide le cache une seule fois, après la fin de toute l'opération en masse. Ajoutez ce code aufunctions.php de votre thème enfant :
/**
* 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();
}
}
Comment ça marche :
- Utilise le hook
woobe_after_bulk_editde BEAR - Ne vide le cache qu'UNE SEULE FOIS après la mise à jour de tous les produits
- Beaucoup plus efficace que de le vider après chaque produit
- Meilleures performances pour les opérations en masse
- Cache vidé une seule fois par édition en masse
- Réduit considérablement la charge serveur
- Ne fonctionne que pour les opérations en masse
- Ne vide pas le cache pour les mises à jour de produits individuels
Solution 4 : approche combinée (le meilleur des deux mondes)
Combinez les solutions 1 et 3 pour le meilleur équilibre entre efficacité et couverture. Ajoutez ce code aufunctions.php de votre thème enfant :
/**
* 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);
Comment ça marche :
- Suit si une opération en masse est en cours
- Pendant les opérations en masse : ne vide le cache qu'une seule fois à la fin
- Pour les mises à jour individuelles : vide le cache immédiatement
- Le meilleur des deux mondes
Quelle solution utiliser ?
Choisissez la solution 1 (vider tout le cache) si :
- Vous avez un site de petite ou moyenne taille
- Vous modifiez les produits individuellement la plupart du temps
- Vous voulez la solution la plus simple
- La performance n'est pas un enjeu critique
Choisissez la solution 2 (produit spécifique) si :
- Vous avez un grand site avec de nombreuses pages Elementor
- Vous n'utilisez Elementor que pour certaines pages produit spécifiques
- Vous voulez minimiser l'impact sur les performances
- Un code légèrement plus complexe ne vous pose pas de problème
Choisissez la solution 3 (masse uniquement) si :
- Vous utilisez principalement l'édition en masse
- Vous mettez rarement à jour des produits individuellement
- La performance est critique
- Vous effectuez de grandes opérations par lot (100+ produits)
Choisissez la solution 4 (combinée) si :
- Vous utilisez à la fois l'édition individuelle et en masse
- Vous voulez une performance optimale dans tous les scénarios
- Vous avez un grand site
- Vous voulez la solution la plus complète
Tester votre solution
Après avoir ajouté le code :- Videz tous les caches (navigateur, WordPress, serveur) pour repartir de zéro
- Modifiez une description de produit via BEAR
- Ouvrez la page produit sur le front-end (pas dans l'éditeur Elementor)
- Actualisez votre navigateur en mode forcé (Ctrl+F5 ou Cmd+Shift+R)
- Vérifiez que le changement apparaît sur le front-end
- Assurez-vous d'utiliser un thème enfant
- Vérifiez qu'Elementor est actif : allez dans Extensions → Extensions installées
- Vérifiez les erreurs PHP : activez WP_DEBUG dans wp-config.php
- Essayez d'abord la solution 1 (la plus simple et la plus fiable)
Remarques importantes sur la mise en cache d'Elementor
Ce qu'Elementor met en cache :
- Fichiers CSS : stockés dans
/wp-content/uploads/elementor/css/ - Structure de la page : mise en page du contenu dynamique
- Données de widgets : configurations des éléments Elementor
Ce que fait le vidage du cache :
- Supprime les anciens fichiers CSS
- Force Elementor à régénérer les styles
- Applique les derniers changements de contenu
Ce que le vidage du cache NE fait PAS :
- Supprimer votre contenu - toutes les données produit restent intactes
- Casser la mise en forme Elementor - les mises en page et designs sont préservés
- Supprimer les designs Elementor - seuls les fichiers de cache sont vidés, pas les données de design
Considérations de performance :
- Après le vidage du cache, le premier chargement de page peut être légèrement plus lent
- Elementor régénère automatiquement les fichiers CSS lors de la première visite
- Les visites suivantes seront à nouveau rapides
- Ceci est un comportement normal
Dépannage
Les changements n'apparaissent toujours pas après l'ajout du code :
Problème : la mise en forme Elementor a disparu Solution : vous avez peut-être supprimé accidentellement la méta_elementor_data. N'utilisez pas delete_post_meta($product_id, '_elementor_data') dans votre code. Supprimez uniquement _elementor_css.
Problème : le code ne semble pas s'exécuter
Solution :
- Vérifiez que vous modifiez bien un thème enfant
- Vérifiez les journaux d'erreurs PHP pour des erreurs de syntaxe
- Assurez-vous que les noms de hooks sont corrects
- Testez d'abord avec la solution 1
- Videz le cache de votre navigateur (Ctrl+F5)
- Videz toute extension de cache WordPress (WP Rocket, W3TC, etc.)
- Videz le cache au niveau du serveur (vérifiez le tableau de bord de votre hébergeur)
- Videz le cache CDN si vous utilisez Cloudflare ou similaire
- Ceci est normal - le cache est en cours de régénération
- Le premier chargement de page sera plus lent
- La performance s'améliore une fois le cache reconstruit
- Envisagez d'utiliser la solution 3 ou 4 pour de meilleures performances
Conflits avec d'autres extensions de cache :
Si vous utilisez d'autres extensions de cache (WP Rocket, W3 Total Cache, LiteSpeed Cache), vous devrez peut-être également vider leur cache :// 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);
Bonnes pratiques
- Utilisez toujours un thème enfant - les mises à jour du thème effaceraient les modifications du thème parent
- Sauvegardez avant d'ajouter du code - sauvegardez toujours functions.php avant de le modifier
- Testez d'abord sur un environnement de préproduction - testez le code sur un site de staging si possible
- Surveillez les performances - utilisez des outils comme GTmetrix pour surveiller la vitesse du site
- Videz tous les caches lors des tests - navigateur, WordPress, serveur et CDN
- Choisissez la bonne solution - trouvez l'équilibre entre simplicité et performance selon vos besoins
Alternative : vidage manuel du cache
Si vous préférez ne pas ajouter de code, vous pouvez vider manuellement le cache d'Elementor après une édition en masse :- Après avoir mis à jour les produits dans BEAR
- Allez dans Elementor → Outils
- Cliquez sur Régénérer les fichiers et les données sous l'onglet "Général"
- Cliquez sur Enregistrer les modifications
- Actualisez vos pages produit
Résumé
Le problème : BEAR met à jour les descriptions dans la base de données, mais Elementor affiche la version en cache La cause : la mise en cache interne d'Elementor ne détecte pas automatiquement les mises à jour en masse La solution : ajouter du code pour vider automatiquement le cache d'Elementor après les mises à jour de produits Meilleure solution simple : utiliser la solution 1 (vider tout le cache après chaque mise à jour) Meilleure solution en termes de performance : utiliser la solution 4 (approche combinée) Code clé :\Elementor\Plugin::instance()->files_manager->clear_cache();
Cette seule ligne vide le cache d'Elementor et force sa régénération au prochain chargement de page.