Vous souhaitez nous contacter, poser des questions / besoins en développement web ?

Contactez-nous
 4

NB : Faire une sauvegarde de votre thème, de votre fichier et/ou votre base de données avant d’ajouter ces fonctions tutoriels.

WooCommerce : statistiques des paniers actifs
Intermédiaire

Publié le : 05 août 2026 - Modifié le : 11 août 2026

Temps de lecture : 3 minutes, 18 seconds - 214 mots

Version audio de cet article

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);
}

Laissez un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

You may use these HTML tags and attributes:

<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>