如何删除WooCommerce中近一年未下单的客户及相关问题咨询
WooCommerce 12个月无有效订单客户清理方案
以下是三种可直接落地的方案,按需选择即可:
方案1:插件批量操作(最简便,无技术门槛)
安装 WooCommerce Bulk Delete 插件,进入插件后台的「客户清理」模块后,设置筛选规则为近12个月无已付款/完成状态有效订单,勾选「同步删除wp_wc_customer_lookup表对应记录」选项,确认筛选结果后一键执行即可。
注:该操作不会删除客户关联的历史订单数据,完全匹配你的需求。
方案2:修复现有自定义代码实现手动批量处理
第一步:修复订单数字段无法排序的问题
你原有代码仅声明了字段可排序,未添加对应的排序查询逻辑,新增以下代码即可实现正常排序:
add_action( 'pre_get_users', 'prefix5487_sort_users_by_order_count' ); function prefix5487_sort_users_by_order_count( $query ) { if ( ! is_admin() || ! $query->is_main_query() ) { return; } if ( 'orders' === $query->get( 'orderby' ) ) { $query->set( 'meta_key', '_order_count' ); $query->set( 'orderby', 'meta_value_num' ); } }
第二步:添加删除同步逻辑
新增以下代码后,从WordPress用户管理页删除用户时,会自动同步删除WooCommerce客户列表的对应记录,不会影响历史订单:
add_action( 'delete_user', 'prefix5487_delete_wc_customer_record' ); function prefix5487_delete_wc_customer_record( $user_id ) { global $wpdb; $wpdb->delete( $wpdb->prefix . 'wc_customer_lookup', [ 'user_id' => $user_id ] ); }
完成上述修改后,你就可以在用户列表按订单数排序,批量选中符合删除条件的用户执行删除即可。
方案3:数据库直接操作(适合有数据库操作经验的用户)
操作前务必先备份全站数据库,避免误操作导致数据丢失。
第一步:查询确认待删除用户
在数据库管理工具(如phpMyAdmin)中执行以下SQL,确认待删除的用户数量符合预期:
SELECT DISTINCT user_id FROM wp_wc_customer_lookup WHERE user_id NOT IN ( SELECT DISTINCT customer_id FROM wp_wc_orders WHERE date_created_gmt >= DATE_SUB(NOW(), INTERVAL 12 MONTH) AND status IN ('wc-completed', 'wc-processing', 'wc-on-hold') ) AND user_id != 0;
第二步:执行删除操作
确认数据无误后,依次执行以下两条SQL完成清理:
-- 删除WooCommerce客户表对应记录 DELETE FROM wp_wc_customer_lookup WHERE user_id NOT IN ( SELECT DISTINCT customer_id FROM wp_wc_orders WHERE date_created_gmt >= DATE_SUB(NOW(), INTERVAL 12 MONTH) AND status IN ('wc-completed', 'wc-processing', 'wc-on-hold') ) AND user_id != 0; -- 删除WordPress用户表对应记录 DELETE FROM wp_users WHERE ID NOT IN ( SELECT DISTINCT customer_id FROM wp_wc_orders WHERE date_created_gmt >= DATE_SUB(NOW(), INTERVAL 12 MONTH) AND status IN ('wc-completed', 'wc-processing', 'wc-on-hold') ) AND ID NOT IN (1,2); -- 此处替换为你的站点管理员ID,避免误删
内容的提问来源于stack exchange,提问作者rudtek
相关产品推荐
相关产品推荐

