购物车存在指定商品时显示提示文本的实现问题
问题解决:购物车指定商品显示优惠券提示
原代码失效的核心原因是你直接引用了$cart_item变量,但在cart.php第149行的位置并没有遍历购物车项的循环,这个变量根本未定义,自然拿不到商品ID,只会输出空段落。
下面是修正后的代码,替换你原来的那段即可:
<p> <?php // 获取WooCommerce购物车实例 $cart = WC()->cart; // 定义需要触发提示的商品ID集合 $target_product_ids = array(15502, 15566, 15567, 18946, 18947, 18948, 16199); $has_target_product = false; // 遍历购物车中的所有商品项 foreach ($cart->get_cart() as $cart_item) { // 获取当前商品的ID(优先取变体ID,没有则取主商品ID) $product_id = $cart_item['variation_id'] > 0 ? $cart_item['variation_id'] : $cart_item['product_id']; // 检查是否在目标ID集合中 if (in_array($product_id, $target_product_ids)) { $has_target_product = true; break; // 找到一个就停止遍历,提升性能 } } // 如果存在目标商品,输出提示文本 if ($has_target_product) { echo '您可以使用优惠券"x"兑换免费贺卡!'; } ?> </p>
代码逻辑说明
- 通过
WC()->cart获取购物车对象,确保能拿到完整的购物车商品数据 - 用数组存储目标商品ID,比一堆
||判断更简洁易维护 - 遍历购物车所有商品项,逐个检查商品ID是否匹配目标集合
- 一旦找到匹配项就标记并终止循环,避免不必要的性能消耗
- 最后根据标记结果判断是否输出提示文本
内容的提问来源于stack exchange,提问作者TurnItOffAndOnAgain
相关产品推荐
相关产品推荐

