我正在尝试显示产品的变体是否已在购物车中(在单个产品页面中)。产品 ID 与购物车对象中的产品的简单比较不适用于可变产品,因为变体 ID 是使用 ajax 加载的。
这是我的代码,适用于产品类型不是变量的情况。
<?php
/*
* Check if Product Already In Cart
*/
function woo_in_cart( $product_id ) {
global $woocommerce;
if ( !isset($product_id) ) {
return false;
}
foreach( $woocommerce->cart->get_cart() as $cart_item ) {
if ( $cart_item['product_id'] === $product_id ){
return true;
} else {
return false;
}
}
}
有什么方法可以让它在没有 jQuery 的情况下工作吗?
你的意思是$product_id
可能是变体的ID?如果是这样,您只需获取父 ID(如果存在)即可:
/*
* Check if Product Already In Cart
*/
function woo_in_cart( $product_id ) {
global $woocommerce;
if ( ! isset( $product_id ) ) {
return false;
}
$parent_id = wp_get_post_parent_id( $product_id );
$product_id = $parent_id > 0 ? $parent_id : $product_id;
foreach ( $woocommerce->cart->get_cart() as $cart_item ) {
if ( $cart_item['product_id'] === $product_id ) {
return true;
} else {
return false;
}
}
}
如果您的意思是您的购物车商品是变体,并且$product_id
已经是父产品 ID,那么您的代码应该已经按原样运行。
The $cart_item
有2个ID:$cart_item['product_id']
and $cart_item['variation_id']
.
So product_id
将始终是父产品的产品。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)