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

如何在WooCommerce购物车/迷你购物车/结账/订单页隐藏指定产品

WooCommerce 跨场景隐藏指定产品实现代码

以下代码可同时覆盖多场景的指定产品隐藏需求,完美兼容分组产品关联子产品的隐藏逻辑:

  • Cart 购物车页面
  • Mini Cart 迷你购物车组件
  • Checkout 结账页面
  • 前端个人中心订单模块、订单通知邮件
  • 后台订单管理页默认保留完整产品记录,方便商家核对,不会向普通用户展示隐藏产品

代码实现

首先配置需要隐藏的产品ID,后续所有场景的判断都会复用该配置,不需要重复修改:

// 配置需要隐藏的产品ID列表
function custom_get_hidden_product_ids() {
    // 替换括号内的数字为你实际需要隐藏的产品ID即可
    return array(123, 456, 789);
}

购物车类场景隐藏逻辑

覆盖购物车页、迷你购物车、结账页的产品行展示过滤,同时修正金额统计,避免隐藏产品仍被计入总价:

// 过滤购物车、迷你购物车、结账页的隐藏产品展示
add_filter( 'woocommerce_cart_get_cart_item_visible', 'custom_filter_hidden_cart_items', 10, 2 );
add_filter( 'woocommerce_widget_cart_item_visible', 'custom_filter_hidden_cart_items', 10, 2 );
add_filter( 'woocommerce_checkout_cart_item_visible', 'custom_filter_hidden_cart_items', 10, 2 );
function custom_filter_hidden_cart_items( $is_visible, $cart_item ) {
    $hidden_ids = custom_get_hidden_product_ids();
    if ( in_array( $cart_item['product_id'], $hidden_ids ) || in_array( $cart_item['variation_id'], $hidden_ids ) ) {
        $is_visible = false;
    }
    return $is_visible;
}

// 购物车、结账页总价计算排除隐藏产品
add_filter( 'woocommerce_cart_get_subtotal', 'custom_exclude_hidden_items_from_cart_total', 10, 2 );
add_filter( 'woocommerce_cart_get_total', 'custom_exclude_hidden_items_from_cart_total', 10, 2 );
function custom_exclude_hidden_items_from_cart_total( $amount, $cart ) {
    $hidden_ids = custom_get_hidden_product_ids();
    $deduct_amount = 0;
    foreach ( $cart->get_cart() as $item ) {
        if ( in_array( $item['product_id'], $hidden_ids ) || in_array( $item['variation_id'], $hidden_ids ) ) {
            $deduct_amount += $item['line_total'] + $item['line_tax'];
        }
    }
    return $amount - $deduct_amount;
}

订单类场景隐藏逻辑

覆盖前端订单详情、订单列表、系统邮件的产品展示,同时修正订单显示金额,后台管理端保留完整数据供商家核对:

// 过滤前端订单、邮件通知中的隐藏产品展示
add_filter( 'woocommerce_order_item_visible', 'custom_filter_hidden_order_items', 10, 2 );
function custom_filter_hidden_order_items( $is_visible, $order_item ) {
    $hidden_ids = custom_get_hidden_product_ids();
    $product_id = $order_item->get_product_id();
    $variation_id = $order_item->get_variation_id();
    if ( in_array( $product_id, $hidden_ids ) || in_array( $variation_id, $hidden_ids ) ) {
        $is_visible = false;
    }
    return $is_visible;
}

// 前端订单金额计算排除隐藏产品
add_action( 'woocommerce_order_get_items', 'custom_adjust_order_total_for_hidden', 10, 2 );
function custom_adjust_order_total_for_hidden( $items, $order ) {
    // 后台管理页不做金额调整,保留完整订单数据
    if ( is_admin() && !wp_doing_ajax() ) {
        return $items;
    }
    $hidden_ids = custom_get_hidden_product_ids();
    $deduct_amount = 0;
    foreach ( $items as $item ) {
        $product_id = $item->get_product_id();
        $variation_id = $item->get_variation_id();
        if ( in_array( $product_id, $hidden_ids ) || in_array( $variation_id, $hidden_ids ) ) {
            $deduct_amount += $item->get_total() + $item->get_total_tax();
        }
    }
    if ( $deduct_amount > 0 ) {
        $order->set_total( $order->get_total() - $deduct_amount );
    }
    return $items;
}

使用注意事项

  • 将上述全部代码添加到当前主题目录下的functions.php文件,或者使用代码片段类插件插入即可生效
  • 仅需要修改custom_get_hidden_product_ids函数内的ID数组,填入需要隐藏的产品ID即可,不需要改动其他逻辑
  • 代码兼容简单产品、可变产品、分组产品子产品的隐藏需求

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 11:03:23