NB : Faire une sauvegarde de votre thème, de votre fichier et/ou votre base de données avant d’ajouter ces fonctions tutoriels.
Publié le : 05 août 2026 - Modifié le : 11 août 2026
Temps de lecture : 3 minutes, 18 seconds - 214 mots
Dans ce tutoriel, nous allons voir comment calculer la quantité totale de produits actuellement présents dans les paniers actifs des utilisateurs WooCommerce ainsi que la valeur totale de tous les paniers en cours.
Les statistiques natives de WooCommerce permettent de suivre les commandes, les ventes et le chiffre d’affaires réalisé, mais elles ne donnent pas toujours une vision de l’activité commerciale en temps réel. Pourtant, les produits ajoutés aux paniers des visiteurs représentent une information importante pour analyser l’intérêt des clients et mesurer le potentiel de vente.
Grâce aux statistiques des paniers actifs WooCommerce, il devient possible de connaître le nombre total d’articles actuellement sélectionnés par les utilisateurs ainsi que la valeur financière globale de ces paniers avant leur conversion en commande.
Dans ce tutoriel, nous allons donc créer deux fonctions personnalisées :
- Calculer la quantité totale de produits présents dans tous les paniers actifs WooCommerce.
- Calculer la valeur totale de tous les paniers actifs des utilisateurs.
Calculer la quantité totale de produits présents dans tous les paniers actifs WooCommerce.
/////////////////////////// Show count product in all carts /////////////////////////////
//////////////////////////////////////////////////////////////////////////////////////////
function woocl_get_total_products_in_active_carts() {
global $wpdb;
// 1. On récupère dynamiquement le bon ID du site (généralement 1)
$blog_id = get_current_blog_id();
$meta_key = '_woocommerce_persistent_cart_' . $blog_id;
// 2. On exécute la requête avec la bonne clé
$results = $wpdb->get_results($wpdb->prepare("
SELECT meta_value
FROM {$wpdb->usermeta}
WHERE meta_key = %s AND meta_value != ''
", $meta_key));
$total = 0;
if (!empty($results)) {
foreach ($results as $row) {
$cart_data = maybe_unserialize($row->meta_value);
// 3. On vérifie s'il y a des produits et on additionne les quantités
if (!empty($cart_data['cart']) && is_array($cart_data['cart'])) {
foreach ($cart_data['cart'] as $item) {
if (isset($item['quantity']) && is_numeric($item['quantity'])) {
$total += (int) $item['quantity'];
}
}
}
}
}
return $total;
}Calculer la valeur totale de tous les paniers actifs des utilisateurs.
/////////////////////////// Show price amount in all carts //////////////////////////////
//////////////////////////////////////////////////////////////////////////////////////////
function woocl_get_total_cart_amount_all_users() {
global $wpdb;
$blog_id = get_current_blog_id();
$meta_key = '_woocommerce_persistent_cart_' . $blog_id;
// Récupération de toutes les lignes non vides
$results = $wpdb->get_results($wpdb->prepare("
SELECT meta_value
FROM {$wpdb->usermeta}
WHERE meta_key = %s AND meta_value != ''
", $meta_key));
$total_amount = 0;
if (!empty($results)) {
foreach ($results as $row) {
$cart_data = maybe_unserialize($row->meta_value);
// On vérifie s'il y a bien des éléments dans le panier (ex: a:2:{...} et non a:0:{})
if (!empty($cart_data['cart']) && is_array($cart_data['cart'])) {
foreach ($cart_data['cart'] as $cart_item_key => $item) {
// WooCommerce stocke TOUJOURS l'ID dans 'product_id' au sein de l'élément
$product_id = isset($item['product_id']) ? (int) $item['product_id'] : 0;
$quantity = isset($item['quantity']) ? (int) $item['quantity'] : 0;
if ($product_id > 0 && $quantity > 0) {
$product = wc_get_product($product_id);
if ($product) {
// Prise en compte du prix du produit (ou de la variation)
$price = (float) $product->get_price();
$total_amount += $price * $quantity;
}
}
}
}
}
}
return wc_price($total_amount);
}