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

Woocommerce结账页指定变体已加购时移除提示区块的实现方法

实现方案

你只需要在原有逻辑中新增「购物车是否已包含ID为100、变体ID为112的商品」的判断即可,只要检测到该商品已加入购物车,就不渲染u-1提示区块,修改后的完整代码如下:

add_action('woocommerce_review_order_before_submit', 'displays_cart_products_feature_image');
function displays_cart_products_feature_image() {
    // 设置需要判断的产品ID
    $product_ids = array(100);
    $show_notice = false;
    $has_target_variant = false;
    
    foreach ( WC()->cart->get_cart() as $cart_item_key => $cart_item ) {
        $item = $cart_item['data'];
        // 判断是否存在ID100+变体111的商品
        if ( in_array( $item->id, $product_ids ) && $cart_item['variation_id'] == 111 ) {
            $show_notice = true;
        }
        // 新增判断:是否已经添加了ID100+变体112的商品
        if ( in_array( $item->id, $product_ids ) && $cart_item['variation_id'] == 112 ) {
            $has_target_variant = true;
        }
    }
    // 只有当存在111变体、且不存在112变体时才显示提示
    if ($show_notice && !$has_target_variant) {
        echo '
        <div id="u-1">
            <a href="/?add-to-cart=100&variation_id=112">Add new item</a>
        </div>';
    }
}

逻辑说明

  • 遍历购物车时会同时做两个校验:是否存在需要提示的111变体、是否已经添加了目标112变体
  • 只有同时满足「有111变体」和「没有112变体」两个条件时,才会渲染提示区块
  • 用户点击按钮添加112变体后页面重载,此时$has_target_variant会被标记为true,提示区块自然就不会输出,不需要额外JS处理

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 08:54:07