首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >改变购物车的原价以适应WooCommerce产品的变化

改变购物车的原价以适应WooCommerce产品的变化
EN

Stack Overflow用户
提问于 2017-05-12 17:26:02
回答 1查看 2.5K关注 0票数 3

我试着用这个来改变手推车的原价,但没有骰子。我认为它不起作用,因为我使用的产品是可变产品。产品ID为141,变异ID为142。

代码语言:javascript
复制
function sv_change_product_price_cart( $price, $cart_item, $cart_item_key ) {
    if ( 142 === $cart_item['product_id'] ) {
        $price = '$50.00 per Unit<br>(7-8 skewers per Unit)';
    }
    return $price;
}
add_filter( 'woocommerce_cart_item_price', 'sv_change_product_price_cart', 10, 3 );

如何使它发挥作用

谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-05-12 17:38:38

您应该用$cart_item['variation_id']代替$cart_item['product_id'],使其在您的条件下适合产品的变化。

此函数只更改显示,而不更改计算:

代码语言:javascript
复制
// Changing the displayed price (with custom label)
add_filter( 'woocommerce_cart_item_price', 'sv_display_product_price_cart', 10, 3 );
function sv_display_product_price_cart( $price, $cart_item, $cart_item_key ) {
    if ( 142 == $cart_item['variation_id'] ) {
        // Displaying price with label
        $price = '$50.00 per Unit<br>(7-8 skewers per Unit)';
    }
    return $price;
}

这里有一个钩子函数,它将根据您的价格更改购物车的计算:

代码语言:javascript
复制
// Changing the price (for cart calculation)
add_action( 'woocommerce_before_calculate_totals', 'sv_change_product_price_cart', 10, 1 );
function sv_change_product_price_cart( $cart ) {

    if ( is_admin() && ! defined( 'DOING_AJAX' ) )
        return;

    if ( did_action( 'woocommerce_before_calculate_totals' ) >= 2 )
        return;

    foreach ( $cart->get_cart() as $cart_item ) {
        if ( 142 == $cart_item['variation_id'] ){
            // Set your price
            $price = 50;

            // WooCommerce versions compatibility
            if ( version_compare( WC_VERSION, '3.0', '<' ) ) {
                $cart_item['data']->price = $price; // Before WC 3.0
            } else {
                $cart_item['data']->set_price( $price ); // WC 3.0+
            }
        }
    }
}

代码在您的活动子主题(或主题)的function.php文件中,或者在任何插件文件中。

所以你会明白的:

此代码是在Woocommerce版本2.6.x和3.0+上测试的

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43943348

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档