php - WooCommerce:在价格函数中获取 $cart_item
问题描述
我正在使用自定义函数来更改产品价格的样式。
这是我的实际功能:
add_filter( 'woocommerce_format_sale_price', function( $price, $regular_price, $sale_price ) {
// stuff happens here
}, 10, 3 );
如果我想要产品中的一些元字段,它可以在产品详细信息页面上正常工作。
global $product
如果我使用并从那里开始,我可以获得这些元字段。
问题是,global $product
如果在购物车/结帐页面上使用会引发错误。
所以我正在使用is_product()
并is_cart()
检查我在哪里。
但我不知道如何从购物车中的产品中获取元字段。
我知道,我可以使用$cart_item
like $product
。但似乎没有办法将它与global
.
有没有其他方法可以在上面的函数中获取购物车项目?
解决方案
您可以使用WC()->cart
来获取购物车对象。然后你可以循环使用它$cart->get_cart()
来获取cart_item
. 试试下面的代码。
add_filter( 'woocommerce_format_sale_price', function( $price, $regular_price, $sale_price ) {
if ( WC()->cart ) {
$cart = WC()->cart; // Get cart
if ( ! $cart->is_empty() ) {
foreach ( $cart->get_cart() as $cart_item_key => $cart_item ) {
$product_id = $cart_item['product_id'];
// stuff happens here
}
}
}
}, 10, 3 );
推荐阅读
- python - pygame 2.0.0 不创建窗口(崇高)?
- jquery - 在 vue.js 中查找数组长度时无法读取未定义的属性“长度”
- swiftui - 适用于 iOS 的 Google Places SDK 相当于 Google Places API 调用
- ms-project - Microsoft Project unable to establish a connection with Project Server 2016
- python - Blender 脚本在比例转换后调整大小
- javascript - 如何用更短的代码用 Javascript 创建多个段落?
- mysql - Google Analytics - 将数据实时(> 30 秒)导出到 MySQL 数据库
- regex - 正则表达式提取两个字符串之间的文本
- java - 如何使用正则表达式拆分字符串,取多于 1 位的数字#Java
- python - 基于 B 列的 groupby 聚合的 A 列值