如何在购物车中获得产品变化



我有一些套餐要卖。为例。鸡肉套餐有多种: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包

相关内容

  • 没有找到相关文章

最新更新