Php WooCommerce我的帐户页面-获取订单查询的当前用户
我试图为每个用户计算特定项目的总和,但它似乎不识别当前用户,而是为所有客户计算所有订单的总和 我怎样才能解决这个问题?我错过了什么 以下是我正在使用的代码:Php WooCommerce我的帐户页面-获取订单查询的当前用户,php,mysql,sql,wordpress,woocommerce,Php,Mysql,Sql,Wordpress,Woocommerce,我试图为每个用户计算特定项目的总和,但它似乎不识别当前用户,而是为所有客户计算所有订单的总和 我怎样才能解决这个问题?我错过了什么 以下是我正在使用的代码: $order_items = apply_filters( 'woocommerce_reports_top_earners_order_items', $wpdb->get_results( " SELECT order_item_meta_2.meta_value as product_id, SUM( order_item_m
$order_items = apply_filters( 'woocommerce_reports_top_earners_order_items', $wpdb->get_results( "
SELECT order_item_meta_2.meta_value as product_id, SUM( order_item_meta.meta_value ) as line_total FROM {$wpdb->prefix}woocommerce_order_items as order_items
LEFT JOIN {$wpdb->prefix}woocommerce_order_itemmeta as order_item_meta ON order_items.order_item_id = order_item_meta.order_item_id
LEFT JOIN {$wpdb->prefix}woocommerce_order_itemmeta as order_item_meta_2 ON order_items.order_item_id = order_item_meta_2.order_item_id
LEFT JOIN {$wpdb->posts} AS posts ON order_items.order_id = posts.ID
WHERE posts.post_type = 'shop_order'
AND posts.post_status IN ( '" . implode( "','", array( 'wc-completed', 'wc-processing', 'wc-on-hold' ) ) . "' )
AND order_items.order_item_type = 'line_item'
AND order_item_meta.meta_key = '_line_total'
AND order_item_meta_2.meta_key = '_product_id'
GROUP BY order_item_meta_2.meta_value
" ));
$totalPR = 0;
$Products = array(1507, 1406, 1506);
foreach ($order_items as $item) {
if (in_array($item->product_id, $Products)) {
$totalPR = $item->line_total + $totalPR;
echo $totalPR;
}
}
更新2-它正在努力实现以下目标:
LEFT JOIN {$wpdb->postmeta} AS postmeta ON order_items.order_id = postmeta.post_id
AND postmeta.meta_key = '_customer_user'
AND postmeta.meta_value = '$customer_id'
global $wpdb;
// Set here your product ids
$products = array( 1507, 1406, 1506 );
$all_customers = get_users( 'role=customer' );
foreach ( $all_customers as $customer ) {
$customer_id = $customer->ID;
$total_pr = 0;
$query = $wpdb->get_results("
SELECT order_item_meta_2.meta_value as product_id,
SUM( order_item_meta.meta_value ) as line_total
FROM {$wpdb->prefix}woocommerce_order_items as order_items
LEFT JOIN {$wpdb->prefix}woocommerce_order_itemmeta as order_item_meta ON order_items.order_item_id = order_item_meta.order_item_id
LEFT JOIN {$wpdb->prefix}woocommerce_order_itemmeta as order_item_meta_2 ON order_items.order_item_id = order_item_meta_2.order_item_id
LEFT JOIN {$wpdb->postmeta} AS postmeta ON order_items.order_id = postmeta.post_id
LEFT JOIN {$wpdb->posts} AS posts ON order_items.order_id = posts.ID
WHERE posts.post_type = 'shop_order'
AND posts.post_status IN ( '" . implode( "','", array( 'wc-completed', 'wc-processing', 'wc-on-hold' ) ) . "' )
AND postmeta.meta_key = '_customer_user'
AND postmeta.meta_value = '$customer_id'
AND order_items.order_item_type = 'line_item'
AND order_item_meta.meta_key = '_line_total'
AND order_item_meta_2.meta_key = '_product_id'
GROUP BY order_item_meta_2.meta_value
");
$results = apply_filters( 'woocommerce_reports_top_earners_order_items', $query );
foreach ( $results as $values ) {
if ( in_array( $values->product_id, $products ) ) {
$total_pr += $values->line_total;
}
}
echo 'customer ID: ' . $customer->ID . ' | Total PR: ' . number_format( $total_pr, 2 ) . '<br>';
}
global$wpdb;
//在此处设置您的产品ID
$products=阵列(150714061506);
$all_customers=get_用户('role=customer');
foreach($customer作为$customer的所有客户){
$customer\u id=$customer->id;
$total_pr=0;
$query=$wpdb->get_结果(“
选择订单\项目\元\ 2.元\值作为产品\ id,
合计(订单项目元值)为行合计
从{$wpdb->prefix}woocommerce\u order\u项目作为order\u项目
左联接{$wpdb->prefix}woocommerce\u order\u itemmeta作为order\u item\u meta在order\u items.order\u item\u id=order\u item\u meta.order\u item\u id
左联接{$wpdb->prefix}woocmerce\u order\u itemmeta作为order\u item\u meta\u 2在order\u items.order\u item\u id=order\u item\u meta\u 2.order\u item\u id
左连接{$wpdb->postmeta}作为订单\项目的postmeta.order\ id=postmeta.post\ id
左连接{$wpdb->posts}作为order_项目上的POST。order_id=posts.id
其中posts.post\u type='shop\u order'
和posts.post_状态在(“.”。内爆(“,”),数组('wc completed','wc processing','wc on hold'))。“)
和postETA.meta_key=''u customer\u user'
和postETA.meta_值=“$customer_id”
和订单项目。订单项目类型='行项目'
和订单项目meta.meta键=''u行\u总计'
和order_item_meta_2.meta_key=''u product_id'
按订单分组\u项目\u元\u 2.元\u值
");
$results=apply_filters('woocommerce_reports_top_newers_order_items',$query);
foreach($结果为$值){
if(在数组中($values->product\u id,$products)){
$total\u pr+=$values->line\u total;
}
}
回显“客户ID:”.$customer->ID.“|总请购单:”.编号格式($Total\u请购单,2)。”
;
}
经过测试并正常工作。它将输出带有客户ID的列表以及相应的总PR
参考资料:
你说的“不认识上述用户”到底是什么意思?你有错误吗?意外输出?还有别的吗?请在问题中包含尽可能多的信息!嗨,谢谢你的回答,但它没有显示任何结果,伙计。@PatrickJosephAragones在一年之后,它工作了!!!但是现在已经太晚了:)…我只是想找到解决方案,所以现在就完成了。答案是在wp_postETA
表中查找客户ID,而不是在wp_posts
表中查找。回头见…