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