如何在WordPress用户列表中添加显示每个用户WooCommerce商品数量的自定义列
如何在WordPress用户列表中添加显示每个用户WooCommerce商品数量的自定义列
我明白你的问题啦!你之前尝试直接替换字段名的方式没效果,是因为billing_country是WooCommerce客户对象自带的现成属性,但商品数量得咱们自己去查询计算,没法直接调用现有方法拿到。下面我给你调整好的代码,直接用就能实现需求:
代码实现(统计用户已购商品总数)
这个版本适合统计用户所有有效订单里的商品总数量,你可以按需调整订单状态的范围:
// 给用户列表添加新列 add_filter( 'manage_users_columns', 'add_user_item_count_column' ); function add_user_item_count_column( $columns ) { $columns['item_count'] = '商品数量'; // 这里是列表中显示的列标题,可自定义 return $columns; } // 填充新列的内容 add_filter( 'manage_users_custom_column', 'populate_user_item_count_column', 10, 3 ); function populate_user_item_count_column( $content, $column, $user_id ) { if ( 'item_count' === $column ) { $total_items = 0; // 查询该用户的所有有效订单,这里默认包含已完成和处理中的订单,可按需修改 $orders = wc_get_orders( array( 'customer_id' => $user_id, 'status' => array( 'wc-completed', 'wc-processing' ), 'limit' => -1, // 不限制数量,获取所有符合条件的订单 ) ); // 遍历订单累加商品数量 foreach ( $orders as $order ) { $total_items += $order->get_item_count(); } $content = $total_items; } return $content; }
如果你需要统计用户发布的商品数量(多商户/用户可发布产品场景)
如果你的需求是统计用户作为卖家发布的公开商品数量,就用下面这段代码:
// 给用户列表添加新列 add_filter( 'manage_users_columns', 'add_user_product_count_column' ); function add_user_product_count_column( $columns ) { $columns['product_count'] = '发布商品数量'; return $columns; } // 填充新列的内容 add_filter( 'manage_users_custom_column', 'populate_user_product_count_column', 10, 3 ); function populate_user_product_count_column( $content, $column, $user_id ) { if ( 'product_count' === $column ) { // 查询该用户发布的所有公开商品 $args = array( 'post_type' => 'product', 'post_status' => 'publish', 'author' => $user_id, 'posts_per_page' => -1, 'fields' => 'ids', // 只获取ID,提升查询效率 ); $products = get_posts( $args ); $content = count( $products ); } return $content; }
小提示
你可以根据自己的业务需求调整订单状态范围,比如要不要包含待付款、已取消的订单,只需要修改status数组里的参数就行(WooCommerce的订单状态前缀是wc-,比如待付款是wc-pending)。
备注:内容来源于stack exchange,提问作者vallespir
相关产品推荐
相关产品推荐

