php - 获取用户在 Woocommerce 中购买最多的产品
问题描述
在 Woocommerce 中,我试图从订单详细信息中为客户获取购买次数最多的产品。所以我想获取用户更频繁购买的产品 ID。
我还没找到路。在 Woocommerce 中这可能吗?
任何帮助表示赞赏。
解决方案
以下非常简单的 SQL 查询将为您提供当前客户购买次数最多的 10 个产品 ID 的数组:
// Get the current user ID
$user_id = get_current_user_id(); // (or set a user ID dynamically)
// Number of product Ids Max
$limit = 10; // 0 or -1 for unlimited
global $wpdb;
$limit_clause = $limit > 0 ? "LIMIT $limit" : "";
$products_ids = $wpdb->get_col( "
SELECT DISTINCT products.ID
FROM {$wpdb->prefix}posts as products
JOIN {$wpdb->prefix}postmeta as product_meta
ON products.ID = product_meta.post_id
JOIN {$wpdb->prefix}woocommerce_order_itemmeta as order_itemmeta
ON products.ID = order_itemmeta.meta_value
JOIN {$wpdb->prefix}woocommerce_order_items as order_items
ON order_itemmeta.order_item_id = order_items.order_item_id
JOIN {$wpdb->prefix}posts as orders
ON order_items.order_id = orders.ID
JOIN {$wpdb->prefix}postmeta as order_meta
ON orders.ID = order_meta.post_id
WHERE orders.post_type = 'shop_order'
AND orders.post_status IN ('wc-completed','wc-processing')
AND order_meta.meta_key = '_customer_user'
AND order_meta.meta_value = '$user_id'
AND order_itemmeta.meta_key = '_product_id'
AND products.post_type = 'product'
AND products.post_status = 'publish'
AND product_meta.meta_key = 'total_sales'
ORDER BY cast(product_meta.meta_value as unsigned) DESC $limit_clause
" );
将提供一系列产品 ID……经过测试并且可以工作。
推荐阅读
- visual-studio-2019 - Visual Studio 2019 上的 Jupiter 笔记本
- sql - 是否可以在 hive sql 中使用 IF 语句来确定要使用哪个 JOIN 语句?
- python - 使用 Python 通过 shell 模拟登录
- python - 如何在 numpy 中创建体积均匀的点云?
- firebase - Firebase 客户端对您的实时数据库的访问权限已过期
- wpf - 中继命令在极少数情况下被触发两次
- python - Python:根据传递的元组(所有元组元素)对字典进行分组
- oauth-2.0 - 使用github OAuth时交换身份验证码以获取访问令牌的正确方法是什么
- wordpress - 有人可以建议什么是 wordpress 中与我的要求相关的最佳表单插件?
- amazon-web-services - 如何在 kuberntes 上公开入口以获取公共 IP 地址?