首页 > 解决方案 > 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_itemlike $product。但似乎没有办法将它与global.

有没有其他方法可以在上面的函数中获取购物车项目?

标签: phpwordpresswoocommercecartcheckout

解决方案


您可以使用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 );

推荐阅读