为了账号安全,请及时绑定邮箱和手机立即绑定

登录用户的 WooCommerce 产品定制折扣价

登录用户的 WooCommerce 产品定制折扣价

PHP
犯罪嫌疑人X 2023-08-11 16:11:42
我有关于在 WooCommerce 中管理价格的问题。我有一家商店,只出售简单的产品。假设对于所有订户和客户,每种产品的正常价格都有 10% 的折扣。这很简单:    function custom_price( $price, $product ) {    global $post, $blog_id;    $post_id = $post->ID;    get_post_meta($post->ID, '_regular_price');        if ( is_user_logged_in() ) {            return $price = ($price * 0.9);        } else{            return $price;              }   }   add_filter( 'woocommerce_get_price', 'custom_price', 10, 2);对于已经有促销价的产品,我希望 woocommerce 按正常价格计算登录用户的折扣,并且客户可以看到促销价和折扣价之间的最低价格。所以:场景1正常价格:100登录用户专用价格:90(比正常价格优惠 10%)产品售价:85登录用户的价格必须是:85场景2正常价格:100登录用户专用价格:90(比正常价格优惠 10%)产品售价:95登录用户的价格必须是:90Woocommerce 使用上面的代码片段,计算登录用户在销售价格上的 10% 折扣,返回:场景1登录用户的产品价格:76.5(促销价 10% 折扣,85)场景2登录用户的产品价格:85.5(促销价 95 折 10%)我该如何解决?感谢您的帮助
查看完整描述

1 回答

?
智慧大石

TA贡献1946条经验 获得超3个赞

您的问题代码自 WooCommerce 3 起已过时且已弃用......而是使用以下应与您的场景相匹配的代码:


add_filter( 'woocommerce_product_get_price', 'custom_discount_price', 10, 2 );

add_filter( 'woocommerce_product_variation_get_price', 'custom_discount_price', 10, 2 );

function custom_discount_price( $price, $product ) {

    // For logged in users

    if ( is_user_logged_in() ) {

        $discount_rate = 0.9; // 10% of discount

        

        // Product is on sale

        if ( $product->is_on_sale() ) { 

            // return the smallest price value between on sale price and custom discounted price

            return min( $price, ( $product->get_regular_price() * $discount_rate ) );

        }

        // Product is not on sale

        else {

            // Returns the custom discounted price

            return $price * $discount_rate;

        }

    }

    return $price;

}

代码位于活动子主题(或活动主题)的functions.php 文件中。经过测试并有效。


查看完整回答
反对 回复 2023-08-11
  • 1 回答
  • 0 关注
  • 84 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信