복붙노트

[SQL] Woocommerce의 일에 대한 주문 총 구매 금액을 받기

SQL

Woocommerce의 일에 대한 주문 총 구매 금액을 받기

Woocommerce, 나는 오늘 주문 총 구매 금액을 얻으려고 노력, 아래의 코드를 작성 :

function order_total_woo_fahad(){

    // Get orders from people named John that were paid in the year 2016.
$orders = wc_get_orders( array(
    'date_paid' => '2018-07-03'
) );
$total_of_all=0;
for($i=0;$orders[i];$i++)
    $total_of_all= $orders[i]->get_total();
    return $total_of_all;
}

그러나 널 (null)을 반환합니다.

내가 잘못 뭐하는 거지? 어떻게 하루 주문 총 구매 금액을받을 수 있나요?

해결법

  1. ==============================

    1.이 얻을 수있는 가장 효과적인 방법은 다음과 같은 매우 가벼운 SQL 쿼리를 사용하는 것입니다, 즉, "처리"와 "완료"주문 상태에 대한 지난 24 시간 동안 모든 주문 합계의 합계를 얻을 것이다 :

    이 얻을 수있는 가장 효과적인 방법은 다음과 같은 매우 가벼운 SQL 쿼리를 사용하는 것입니다, 즉, "처리"와 "완료"주문 상태에 대한 지난 24 시간 동안 모든 주문 합계의 합계를 얻을 것이다 :

    function get_daily_purchases_total(){
        global $wpdb;
    
        return $wpdb->get_var( "
            SELECT DISTINCT SUM(pm.meta_value)
            FROM {$wpdb->prefix}posts as p
            INNER JOIN {$wpdb->prefix}postmeta as pm ON p.ID = pm.post_id
            WHERE p.post_type LIKE 'shop_order'
            AND p.post_status IN ('wc-processing','wc-completed')
            AND UNIX_TIMESTAMP(p.post_date) >= (UNIX_TIMESTAMP(NOW()) - (86400))
            AND pm.meta_key LIKE '_order_total'
        " );
    }
    

    코드는 function.php의 활성 자식 테마의 파일 (또는 활성 테마)에 간다. 테스트 및 작동합니다.

    사용법 예 - 매일 총 형식의 양을 구입 표시 :

    <?php echo '<p>Total purchased of the day: ' . strip_tags( wc_price(get_daily_purchases_total() ) ) . '</p>'; ?>
    

    대신 "오늘"날짜를 기준으로 총을 얻고 싶은 경우에, 당신은 코드이 줄을 대체합니다 :

    AND UNIX_TIMESTAMP(p.post_date) >= (UNIX_TIMESTAMP(NOW()) - (86400))
    

    이 라인별로 :

    AND DATE(p.post_date) >= CURDATE()
    
  2. ==============================

    2.

    <?php
    global $wpdb;
    
    $date_from = '2015-11-20';
    $date_to = '2015-12-20';
    $post_status = implode("','", array('wc-processing', 'wc-completed') );
    
    $result = $wpdb->get_results( "SELECT * FROM $wpdb->posts 
                WHERE post_type = 'shop_order'
                AND post_status IN ('{$post_status}')
                AND post_date BETWEEN '{$date_from}  00:00:00' AND '{$date_to} 23:59:59'
            ");
    
    echo "<pre>";
    print_r($result);
    ?>
    
  3. from https://stackoverflow.com/questions/51152861/get-orders-total-purchases-amount-for-the-day-in-woocommerce by cc-by-sa and MIT license