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

如何在WooCommerce购物车页面仅为特定商品显示复选框

如何在WooCommerce购物车页面仅为特定商品显示复选框

嗨,我来帮你搞定这个问题!你现在的代码不管购物车里有没有特定商品都会显示复选框,要实现“仅当特定商品在购物车时才显示”的效果,我们需要先检查购物车中是否包含目标商品,再决定是否输出内容。

思路很简单:

  • 先定义你要检测的目标商品ID
  • 遍历购物车中的所有商品,检查是否有商品ID和目标ID匹配
  • 如果找到匹配的商品,就显示复选框和文本;否则不显示

下面是修改后的完整代码:

// Woocommerce - CHECKBOX Disclaimer on Add To Cart Page
add_action('woocommerce_proceed_to_checkout', 'Disclaimer1_test', 10);

function Disclaimer1_test() {
    // 替换成你需要检测的特定商品ID
    $target_product_id = 123;
    $product_in_cart = false;

    // 遍历购物车中的所有商品
    foreach (WC()->cart->get_cart() as $cart_item) {
        $product = $cart_item['data'];
        // 检查当前商品ID是否匹配目标ID
        if ($product->get_id() == $target_product_id) {
            $product_in_cart = true;
            break; // 找到后直接跳出循环,不用再检查其他商品
        }
    }

    // 如果目标商品在购物车中,才显示复选框和文本
    if ($product_in_cart) {
        echo '<input type="checkbox" required />';
        echo '<p>This is a test</p>';
    }
}

我来给你解释几个关键点:

  1. 用WC()->cart->get_cart()获取购物车中的所有商品数据,这比直接用global $product更靠谱——因为这个钩子下的$product不一定对应购物车里的商品(购物车可能有多个商品)
  2. 遍历购物车时,通过$cart_item['data']获取商品对象,再用get_id()拿到商品ID进行对比
  3. 一旦找到匹配的商品,就把$product_in_cart设为true并跳出循环,能提升代码运行效率
  4. 最后只有当$product_in_cart为true时,才输出复选框和文本

你只需要把代码里的123替换成你实际需要检测的商品ID就可以用啦!

备注:内容来源于stack exchange,提问作者JohnLyons

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.15 09:40:29