WooCommerce Product Customer List : optimiser avec WP Rocket
Dans une installation WooCommerce, utiliser le module/plugin WooCommerce Product Customer List (également appelé Product Customer List for WooCommerce) permet d’afficher au sein d’une fiche-produit, la liste des commandes/clients ayant commandé le produit en question.
Cette liste est affichée dans la fiche-produit de l’interface d’administration, mais peut également l’être dans la fiche-produit publique… notamment en utilisant un code court.
Le problème, c’est que si vous affichez cette liste dans la partie publique et que vous utilisez un module/plugin de cache (WP Rocket dans mon cas), la liste affichée sur la fiche-produit publique ne sera jamais actualisée, puisque la mémoire cache de cette fiche-produit ne sera jamais vidée, purgée, rafraichie, régénérée… automatiquement.
Ainsi, j’ai écrit ce petit script PHP (à placer dans le fichier functions.php de votre thème, par exemple) qui, à chaque nouvelle commande, va purger le cache des fiches-produits concernées par cette nouvelle commande.
⚠️ Ce script est compatible uniquement avec le système de cache WP Rocket. Il utilise notamment la fonction rocket_clean_post().
add_action('woocommerce_new_order', 'rocket_new_order_purge_post', 10, 1);
function rocket_new_order_purge_post($order_id)
{
// Récupérer l'objet commande
$order = wc_get_order($order_id);
// Vérifier si la commande est valide
if (!$order) { return; }
// Boucler sur les articles de la commande
foreach ($order->get_items() as $item_id => $item)
{
$product_id = $item->get_product_id(); // ID du produit
$product_name = $item->get_name(); // Nom du produit
// Purger le cache du produit
if (function_exists('rocket_clean_post'))
{
rocket_clean_post($product_id);
error_log("Cache purgé pour le produit: {$product_name} (ID: {$product_id})");
}
else
{
error_log("WP Rocket n'est pas actif ou rocket_clean_post() est introuvable.");
}
}
}
En conclusion, je tiens à préciser que je ne suis pas responsable de l’utilisation qui en est faite. Je vous invite à le tester sur votre propre environnement, à l’adapter si nécessaire, et pourquoi pas à l’améliorer. N’hésitez pas à partager vos retours et vos suggestions d’optimisation dans les commentaires pour aider la communauté !
Laisser un commentaire