我有一些套餐要卖。为例。鸡肉套餐有多种:10包、14包、18包。当人们订购10包时,我想禁用flat_rate:3。但我不知道如何得到这种变化。我的代码如下:
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 );
它不工作。有人能帮忙吗?
只需查看产品数组,就可以从产品数组中获得变化数据。
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 );
这段代码将允许您在cart.php页面中添加变化。我的示例有一个名称,因为当我将变体添加到购物车会话时,我将其命名为"PkgDesc"。这是您需要添加到Cart.php页面的代码。
在foreach()行之后(第48行左右)添加一行代码:
$pkgDesc= apply_filters( 'woocommerce_cart_item_product_id', $cart_item['variation'], $cart_item, $cart_item_key );
现在在你的产品标题(//Meta data)后面添加下面的代码(大约第85行)
echo ": ";
echo $pkgDesc['PkgDesc'];
您的购物车行项目现在看起来像这样:
鸡肉粉:10包