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

我有关于在 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

  • 登录用户的价格必须是:90

Woocommerce 使用上面的代码片段,计算登录用户在销售价格上的 10% 折扣,返回:

场景1

  • 登录用户的产品价格:76.5(促销价 10% 折扣,85)

场景2

  • 登录用户的产品价格:85.5(促销价 95 折 10%)

我该如何解决?感谢您的帮助


犯罪嫌疑人X
浏览 85回答 1
1回答

智慧大石

您的问题代码自 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 文件中。经过测试并有效。
打开App,查看更多内容
随时随地看视频慕课网APP