Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Woocommerce echo tổng doanh số bán lẻ trên mỗi sản phẩm

Tiện ích bảng điều khiển WooCommerce 2.2 đang sử dụng mã sau để tính toán doanh số bán lẻ trong tháng qua:

    // Sales
    $query            = array();
    $query['fields']  = "SELECT SUM( postmeta.meta_value ) FROM {$wpdb->posts} as posts";
    $query['join']    = "INNER JOIN {$wpdb->postmeta} AS postmeta ON posts.ID = postmeta.post_id ";
    $query['where']   = "WHERE posts.post_type IN ( '" . implode( "','", wc_get_order_types( 'reports' ) ) . "' ) ";
    $query['where']  .= "AND posts.post_status IN ( 'wc-" . implode( "','wc-", apply_filters( 'woocommerce_reports_order_statuses', array( 'completed', 'processing', 'on-hold' ) ) ) . "' ) ";
    $query['where']  .= "AND postmeta.meta_key   = '_order_total' ";
    $query['where']  .= "AND posts.post_date >= '" . date( 'Y-m-01', current_time( 'timestamp' ) ) . "' ";
    $query['where']  .= "AND posts.post_date <= '" . date( 'Y-m-d H:i:s', current_time( 'timestamp' ) ) . "' ";

    $sales = $wpdb->get_var( implode( ' ', apply_filters( 'woocommerce_dashboard_status_widget_sales_query', $query ) ) );

sau đó hiển thị nó với:

wc_price( $sales );

Vì ngày tháng đang bị hạn chế trong 2 dòng cuối cùng của $query['where'] chuỗi, tôi cho rằng chúng có thể bị xóa nếu bạn muốn nhận được tổng doanh số mọi thời đại.

    // All-time Sales for entire store
    $query            = array();
    $query['fields']  = "SELECT SUM( postmeta.meta_value ) FROM {$wpdb->posts} as posts";
    $query['join']    = "INNER JOIN {$wpdb->postmeta} AS postmeta ON posts.ID = postmeta.post_id ";
    $query['where']   = "WHERE posts.post_type IN ( '" . implode( "','", wc_get_order_types( 'reports' ) ) . "' ) ";
    $query['where']  .= "AND posts.post_status IN ( 'wc-" . implode( "','wc-", apply_filters( 'woocommerce_reports_order_statuses', array( 'completed', 'processing', 'on-hold' ) ) ) . "' ) ";
    $query['where']  .= "AND postmeta.meta_key   = '_order_total' ";

    $sales = $wpdb->get_var( implode( ' ', $query ) );

Điều này đánh giá tôi là một truy vấn khá chuyên sâu, vì vậy nếu nó sẽ được chạy mọi lúc, bạn có thể muốn điều tra Người chuyển tiếp.

Tôi không chắc về việc sửa đổi nó cho từng sản phẩm vì tôi yếu SQL, nhưng đây là một nỗ lực để lấy chuỗi "where" để chỉ định ID của sản phẩm.

    // All-time Sales for specific product, maybe
    $product_id = 10;
    $query            = array();
    $query['fields']  = "SELECT SUM( postmeta.meta_value ) FROM {$wpdb->posts} as posts";
    $query['join']    = "INNER JOIN {$wpdb->postmeta} AS postmeta ON posts.ID = postmeta.post_id ";
    $query['where']   = sprintf( "WHERE posts.ID = %n", $product_id );
    $query['where']  .= "AND posts.post_status IN ( 'wc-" . implode( "','wc-", apply_filters( 'woocommerce_reports_order_statuses', array( 'completed', 'processing', 'on-hold' ) ) ) . "' ) ";
    $query['where']  .= "AND postmeta.meta_key   = '_order_total' ";

    $sales = $wpdb->get_var( implode( ' ', $query ) );



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Mysql innoDB tiếp tục gặp sự cố

  2. mysql_real_escape_string () thực sự làm gì?

  3. Ý nghĩa của Chọn bảng được tối ưu hóa trong MySQL Giải thích kế hoạch

  4. Riêng biệt phiên bản khác nhau của một trang web

  5. Lỗi PHP (MySQL):Cảnh báo:mysql_num_rows () mong muốn tham số 1 là tài nguyên