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

修改WooCommerce我的账户订单页查询:共享账户订单不显示

解决WooCommerce我的账户订单页无法显示共享账户订单的问题

问题根源

woocommerce_my_account_my_orders_query过滤器传递的$args最终会传入wc_get_orders()函数,但该函数的customer_id参数仅支持单个用户ID,不接受数组值,所以直接将$shared_account_ids数组赋值给$args['customer_id']不会生效。

修复代码

function my_show_orders($args) {
    $user_id = get_current_user_id();
    $meta_key = 'AccountNumber';
    $account_number = get_user_meta($user_id, $meta_key, true);
    $shared_account_ids = my_function_get_users_by_meta_value($meta_key, $account_number);

    // 确保当前用户ID在目标数组中,避免遗漏自身订单
    if (!in_array($user_id, $shared_account_ids)) {
        $shared_account_ids[] = $user_id;
    }

    // 通过meta_query筛选所有共享账户用户的订单
    $args['meta_query'][] = array(
        'key'     => '_customer_user',
        'value'   => $shared_account_ids,
        'compare' => 'IN',
        'type'    => 'NUMERIC'
    );

    // 移除默认的customer_id参数,防止冲突
    unset($args['customer_id']);

    return $args;
}
add_filter('woocommerce_my_account_my_orders_query', 'my_show_orders', 20);

代码说明

  1. 补充当前用户ID:确保$shared_account_ids包含当前用户ID,避免用户看不到自己的订单。
  2. 使用meta_query替代customer_id:订单的用户ID存储在_customer_user元字段中,通过IN操作符匹配所有共享账户的用户ID,实现多用户订单查询。
  3. 移除冲突参数:删除原customer_id参数,防止默认的单个用户筛选逻辑覆盖自定义查询。

内容的提问来源于stack exchange,提问作者Jon

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.14 15:13:15