Aller au contenu
EN

Calculer le coût moyen d’expédition par commande – Woocommerce

Calculer le coût moyen d'expédition par commande - Woocommerce
Version audio de cet article

Nous allons dans ce tutoriel calculer le coût moyen des frais d’expédition par commande sur l’ensemble des commandes (y compris celles qui n’ont pas de frais de livraison), vous pouvez ajuster la fonction de la manière suivante

Calculer le coût moyen des frais d'expédition - Toutes les commandes

function woocl_calculate_average_shipping_cost_per_order_all_orders() {
    $args = array(
        'status' => array('wc-completed', 'wc-shipped'),
        'limit' => -1,
        'return' => 'ids',
    );
    $shipped_orders = wc_get_orders($args);

    $total_shipping_cost = 0;
    $total_orders = count($shipped_orders);

    foreach ($shipped_orders as $order_id) {
        $order = wc_get_order($order_id);
        $shipping_total = (float) $order->get_shipping_total();
        $total_shipping_cost += $shipping_total;
    }

    if ($total_orders > 0) {
        $average_shipping_cost_per_order = $total_shipping_cost / $total_orders;
    } else {
        $average_shipping_cost_per_order = 0;
    }

    return $average_shipping_cost_per_order;
}

Maintenant nous souhaitons l’afficher dans notre template.

$average_shipping_cost_per_order = woocl_calculate_average_shipping_cost_per_order_all_orders();
echo 'Coût moyen d\'expédition par commande (toutes les commandes): ' . wc_price($average_shipping_cost_per_order);

Calculer le coût moyen des frais d'expédition - Commandes avec frais d'expédition

Maintenant, si vous voulez calculer le coût moyen des frais d’expédition uniquement pour les commandes qui ont effectivement des frais d’expédition, vous pouvez utiliser la fonction suivante:

function woocl_calculate_average_shipping_cost_for_orders_with_shipping() {
    $args = array(
        'status' => array('wc-completed', 'wc-shipped'),
        'limit' => -1,
        'return' => 'ids',
    );
    $shipped_orders = wc_get_orders($args);

    $total_shipping_cost = 0;
    $orders_with_shipping = 0;

    foreach ($shipped_orders as $order_id) {
        $order = wc_get_order($order_id);
        $shipping_total = (float) $order->get_shipping_total();

        if ($shipping_total > 0) {
            $total_shipping_cost += $shipping_total;
            $orders_with_shipping++;
        }
    }

    if ($orders_with_shipping > 0) {
        $average_shipping_cost = $total_shipping_cost / $orders_with_shipping;
    } else {
        $average_shipping_cost = 0;
    }

    return $average_shipping_cost;
}

Pour afficher le coût moyen d’expédition (Uniquement les Commandes avec Frais d’Expédition)

$average_shipping_cost = woocl_calculate_average_shipping_cost_for_orders_with_shipping();
echo 'Coût moyen d\'expédition (uniquement les commandes avec frais d\'expédition): ' . wc_price($average_shipping_cost);