php - 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_dump
for$values
并在其中找到了产品 ID。
有什么方法可以通过$cart_item
产品 ID 获取?或任何其他方式在这里加载该元素?
编辑:我需要购物车商品,因为购物车中的价格已更改。常规产品价格不是免费的。
解决方案
使用 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 );
推荐阅读
- javascript - 错误:TypeError: undefined is not an object in Java Script
- sql - 具有 Group BY、ORDER BY 子句的 SQL Server SELECT 查询中的两次相同的列
- django - 如何为 django 用户 defiend admin 操作设置详细名称
- reactjs - Visual Studio Code 调试 - Jest 断点未按预期工作
- mongodb - 服务器上执行了多少 mongo shell 命令的 javascript 部分?
- javascript - 如何使用具体化 css 移动到下一个/上一个选项卡?
- javascript - 当我过滤而不是显示随机序列但我希望序列中的过滤结果中没有序列时
- javascript - 我该如何验证和使用 javascript 标记
- mysql - mysql查询为每个空记录增加一个计数器或标记..?
- spring-mvc - 使用用于 Spring boot+Velocity 项目的 toolboxConfigLocation 渲染速度模板时的 NPE