gpt4 book ai didi

php - WooCommerce 我的账户页面 - 获取订单查询的当前用户

转载 作者:可可西里 更新时间:2023-11-01 08:39:39 26 4
gpt4 key购买 nike

我正在尝试对每个用户的特定项目求和,但它似乎无法识别当前用户并且它对所有客户的所有订单求和。

我该如何解决这个问题?我缺少什么?

这是我使用的代码:

$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 - 正在制作:

  1. 获取客户名单
  2. 在 foreach 循环中遍历每个客户
  3. 获取客户 ID
  4. 为 post_id 上的 wp_postmeta 表添加一个 LEFT JOIN:

    LEFT JOIN {$wpdb->postmeta} AS postmeta ON order_items.order_id = postmeta.post_id
  5. 将这两行插入到您的 WHERE 中:

    AND postmeta.meta_key = '_customer_user'

    AND postmeta.meta_value = '$customer_id'
  6. 然后是客户循环中的循环,以获取客户的总和

这是代码:

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>';
}

经过测试并有效。它将输出包含 Customer IDs 和相应的 Total PR 的列表。


引用资料:

关于php - WooCommerce 我的账户页面 - 获取订单查询的当前用户,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38946718/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com