WooCommerce:在价格函数中获取 $cart_item
WooCommerce: Get $cart_item in price function
我正在使用自定义函数来更改产品价格的样式。
这是我的实际功能:
add_filter( 'woocommerce_format_sale_price', function( $price, $regular_price, $sale_price ) {
// stuff happens here
}, 10, 3 );
如果我想要产品的一些元字段,它在产品详细信息页面上工作正常。
如果我使用 global $product
并从那里开始,我可以获得这些元字段。
问题是,如果在 cart/checkout 页面上使用 global $product
会引发错误。
所以我正在使用 is_product()
和 is_cart()
来检查我在哪里。
但我不知道如何从购物车中的产品中获取元字段。
我知道,我可以像 $product
一样使用 $cart_item
。
但似乎无法将其与 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 );
我正在使用自定义函数来更改产品价格的样式。
这是我的实际功能:
add_filter( 'woocommerce_format_sale_price', function( $price, $regular_price, $sale_price ) {
// stuff happens here
}, 10, 3 );
如果我想要产品的一些元字段,它在产品详细信息页面上工作正常。
如果我使用 global $product
并从那里开始,我可以获得这些元字段。
问题是,如果在 cart/checkout 页面上使用 global $product
会引发错误。
所以我正在使用 is_product()
和 is_cart()
来检查我在哪里。
但我不知道如何从购物车中的产品中获取元字段。
我知道,我可以像 $product
一样使用 $cart_item
。
但似乎无法将其与 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 );