Как получить общий объем продаж заказов WooCommerce без налогов?

#php #sql #wordpress #woocommerce #orders

#php #sql #wordpress #woocommerce #заказы

Вопрос:

Итак, я хочу рассчитать общую сумму продажи, без учета налогов, для моего веб-сайта. Тем не менее, у меня на сайте огромное количество заказов. Это приводит к сбою страницы, потому что она не может обработать вычисления. Есть ли лучший способ вычислить / извлечь это из WooCommerce?

 function calculateTotalSales(){

    $orders = get_posts( array(
        'numberposts' => - 1,
        'post_type'   => array( 'shop_order' ),
        'post_status' => array( 'wc-completed', 'wc-processing', 'wc-pending' )
    ) );

    $total = 0;
    foreach ( $orders as $customer_order ) {
        $order = wc_get_order( $customer_order );
        $total  = $order->get_total() - $order->get_total_tax();
    }
    
    update_option('totalSales', $totalSales);
    return $totalSales;

}
 

Комментарии:

1. Вы проверили раздел отчета?

Ответ №1:

Вы можете использовать эту пользовательскую функцию, которая использует очень легкий SQL-запрос с использованием WPDB класса WordPress, чтобы получить общий объем продаж заказов (без учета налогов).

Он получит общий объем продаж от заказов со статусами «завершено», «обработка», «на удержании» и «в ожидании».

Основной код функции:

 function get_orders_total_sales( $type = 'excluding' ) {
    global $wpdb;

    // Excluding taxes (by default)
    if ( 'excluding' === $type ) {
        $column = 'net_total';
    }
    // Including taxes
    elseif ( 'including' === $type ) {
        $column = 'total_sales';
    }
    // only taxes
    elseif ( 'taxes' === $type ) {
        $column = 'tax_total';
    }
    // only shipping
    elseif ( 'shipping' === $type ) {
        $column = 'shipping_total';
    }

    return (float) $wpdb->get_var("
        SELECT SUM($column)
        FROM {$wpdb->prefix}wc_order_stats
        WHERE status IN ('wc-completed','wc-processing','wc-on-hold','wc-pending')
    ");
}
 

Затем вы можете использовать его в своей собственной функции, например:

 function calculateTotalSales(){
    total_sales = get_orders_total_sales(); // get orders total sales (excluding taxes)
    update_option( 'totalSales', total_sales ); // Save it as a setting option
    return total_sales; 
}
 

Код вводится functions.php файл активной дочерней темы (или активной темы). Протестирован и работает в WooCommerce 4 .


Функция также позволяет получить:

  • общий объем продаж заказов (включая налоги): get_orders_total_sales('including')
  • общий объем продаж заказов (только налоги): get_orders_total_sales('taxes')
  • общий объем продаж заказов (только доставка): get_orders_total_sales('shipping')