首页 > 解决方案 > WooCommerce:检查购物车项目是否免费并将类添加到表格行

问题描述

如果产品是免费的(价格为 0),我想在购物车表行中添加一个额外的类。

我确实有办法添加一个额外的类:

function custom_add_cart_item_classes( $class, $values, $values_key ) {

    if ( isset( $values[ 'product_id' ] ) ) {
        $class .= ' cart_item_' . $values[ 'product_id' ];
        
        // This is the problem: $cart_item is not available here
        $get_item_cart_price = $cart_item['data']->get_price();
        if ($get_item_cart_price == '0') :
            $class .= ' cart_item_free';
        endif;
        
    }

    return $class;
}
add_filter( 'woocommerce_cart_item_class', 'custom_add_cart_item_classes', 10, 3 );

问题是,我无法$cart_item在函数中访问。我做了一个var_dumpfor$values并在其中找到了产品 ID。

有什么方法可以通过$cart_item产品 ID 获取?或任何其他方式在这里加载该元素?

编辑:我需要购物车商品,因为购物车中的价格已更改。常规产品价格不是免费的。

标签: phpwordpresswoocommercecarthook-woocommerce

解决方案


使用 WC 4.9.0 测试正常

function custom_add_cart_item_classes( $class, $values, $values_key ) {

    
        if ( isset( $values[ 'data' ] ) ) {
            $product = $values[ 'data' ];
            if(!$product->get_price()){
                $class .= ' cart_item_free';
            }
        }

    return $class;
}
add_filter( 'woocommerce_cart_item_class', 'custom_add_cart_item_classes', 10, 3 );

推荐阅读