You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何删除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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 10:36:01