我有一些餐点可供出售。例如。 鸡肉饭有变化:10包,14包,18包。 我想禁用flat_rate:3当人们订购10包时。但我不知道如何获得变化。 我的代码如下:
function hide_one_delivery( $rates, $item_id ) {
global $woocommerce, $product;
$10_pack = 0;
foreach ( $woocommerce->cart->cart_contents as $product ) {
$variation_data = $product->get_variation_attributes();
$variation_detail = woocommerce_get_formatted_variation( $variation_data, true );
if( $variation_detail == "10 pack" ){
$10_pack += 1;
}
}
if ($10_pack > 0){
unset( $rates['flat_rate:3'] );
}
return $rates;
}
add_filter( 'woocommerce_package_rates', 'hide_one_delivery', 100 );
它无法正常工作。可以帮忙吗?
答案 0 :(得分:1)
只需查看产品数组,即可从产品数组中获取变体数据。
function hide_one_delivery( $rates, $item_id ) {
global $woocommerce;
foreach ( $woocommerce->cart->cart_contents as $product ) {
//$product is a array, and 10-pack is the slug of the attribute name
if ( $product['variation_id'] && in_array('10-pack', $product['variation']) ) {
unset( $rates['flat_rate:3'] );
break;
}
}
return $rates;
}
add_filter( 'woocommerce_package_rates', 'hide_one_delivery', 100, 2 );
答案 1 :(得分:0)
此代码允许您将变体添加到cart.php页面。我的示例有一个名称,因为当我将其添加到购物车会话时,我将其命名为“PkgDesc”。这是您需要添加到Cart.php页面的代码。
在foreach()行之后添加代码行(第48行):
$pkgDesc= apply_filters( 'woocommerce_cart_item_product_id', $cart_item['variation'], $cart_item, $cart_item_key );
现在在产品标题(//元数据)之后添加以下代码(第85行)
echo ": ";
echo $pkgDesc['PkgDesc'];
您的购物车订单项现在如下所示:
鸡肉饭:10包