0
我已經問了這個問題here並得到了部分正常的答案。但要回顧一下我以前的問題。我在查詢後查詢woocommerce產品,然後將它們顯示在排行榜的列表中。我還需要顯示每種產品的個人零售額。當我說零售額時,我不是指銷售數量,而是銷售的總金額。我現在有了工作代碼,可以讓整個商店的總零售量達到,這非常棒。Woocommerce顯示每件產品的總零售額
// 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));
現在的問題是,我似乎無法得到這個工作的個別產品。目前我有這樣的代碼:
$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));
但不幸的是,它只顯示0。有沒有人可以幫助A.修復單個產品的代碼,或者B.找到一種更好的方法在產品到產品的基礎上實現這一點?
謝謝你對這個問題的任何幫助。
我一直在爲此而瘋狂。有沒有人有任何想法呢? – 2014-10-01 19:07:54
檢查錯誤日誌。得到這個錯誤。 – 2014-10-01 19:42:10
mod_fcgid:stderr:WordPress數據庫錯誤您的SQL語法錯誤;檢查與您的MySQL服務器版本相對應的手冊,以便在第1行'AND posts.post_status IN('wc-completed','wc-processing','wc-on-hold')AND pos'附近使用正確的語法對於查詢SELECT SUM(postmeta.meta_value)FROM wp_posts as posts INNER JOIN wp_postmeta AS postmeta ON posts.ID = postmeta.post_id WHERE posts.ID = AND posts.post_status IN('wc-completed','wc-processing',' )和postmeta.meta_key ='_order_total' – 2014-10-01 19:42:30