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

Woocommerce中特定产品的动态销售价格显示

Woocommerce中特定产品的动态销售价格显示

PHP
达令说 2021-05-03 10:42:49
我需要在功能文件中开发一个脚本,为注册用户显示特定类别的销售价格。这段代码工作正常。我需要添加促销价设计function thenga_customer_specific_pricing( $price, $product ) {        if ( ! is_user_logged_in() ) {        return $price;    }    $id = $product->get_id();    if( has_term( 'daniel-wellington', 'product_cat' ,$id ) ){        // Give these customers a 20% discount.        return $price * 0.8;    } elseif( has_term( 'giardino-segreto', 'product_cat' ,$id ) ){        return $price * 0.85;    } else {        return $price;    }}add_filter( 'woocommerce_product_get_price', 'thenga_customer_specific_pricing', 10, 2 );我期望这样的输出:是:100€现在:80€我试过这个过滤器:function custom_dynamic_sale_price_html( $price_html, $product ) {    if( $product->is_type('variable') ) return $price_html;    $price_html = wc_format_sale_price( wc_get_price_to_display( $product, array( 'price' => $product->get_regular_price() ) ), wc_get_price_to_display(  $product, array( 'price' => $product->get_sale_price() ) ) ) . $product->get_price_suffix();    return $price_html;}add_filter( 'woocommerce_get_price_html', 'custom_dynamic_sale_price_html', 20, 2 );但是它适用于所有产品,如何仅在特定类别中才能将此过滤器称为“过滤器”?
查看完整描述

2 回答

?
慕无忌1623718

TA贡献1744条经验 获得超4个赞

以下代码将显示您的预期输出(对于简单产品):


// Discount prices

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

function specific_discounted_product_prices( $price, $product ) {

    // For logged in customers

    if ( is_user_logged_in() ) {

        if( has_term( 'daniel-wellington', 'product_cat' ,$product->get_id() ) ){

            $price *= 0.8; // 20% discount

        } elseif( has_term( 'giardino-segreto', 'product_cat' ,$product->get_id() ) ){

            $price *= 0.85; // 15% discount

        }

    }

    return $price;

}


// Display the discount

add_filter( 'woocommerce_get_price_html', 'specific_discounted_product_prices_display', 10, 2 );

function specific_discounted_product_prices_display( $price, $product ) {

    // For simple products and logged in customers

    if( $product->is_type('simple') && is_user_logged_in() ){

        $regular_price = wc_get_price_to_display( $product, array( 'price' => $product->get_regular_price() ) );

        $sale_price    = wc_get_price_to_display( $product, array( 'price' => $product->get_sale_price() ) );

        $active_price  = wc_get_price_to_display( $product );


        if( $regular_price != $active_price ) {

            if( $product->is_on_sale() )

                $price = sprintf( 'Was: %s – Now: %s', wc_price($sale_price), wc_price($active_price) );

            else

                $price = sprintf( 'Was: %s – Now: %s', wc_price($regular_price), wc_price($active_price) );

        }

    }

    return $price;

}

代码进入您的活动子主题(或活动主题)的function.php文件中。经过测试和工作。


查看完整回答
反对 回复 2021-05-21
  • 2 回答
  • 0 关注
  • 158 浏览

添加回答

举报

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