在 WooCommerce 中选择的变体销售价格后显示折扣百分比 [英] Display discount percentage after the selected variation sale price in WooCommerce

查看:38
本文介绍了在 WooCommerce 中选择的变体销售价格后显示折扣百分比的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

下面的代码显示了用户选择变体后的变体选择价格

I've this code below that shows the variation selected price after the user have selected the variation

add_filter( 'woocommerce_show_variation_price', 'filter_show_variation_price', 10, 3 );
function filter_show_variation_price( $condition, $product, $variation ){
    if( $variation->get_price() === "" ) return false;
    else return true;
}

我需要计算将显示的促销价格与正常价格之间的折扣百分比.但仅在选择变体之后,而不是之前(因为我将通过 css 从之前显示的价格中删除).

I need to calculate the discount percentage between the promotional price that will show and the regular price. BUT ONLY after the variation is selected, not before (because i will remove the price from showing before via css).

我认为这个答案接近但还没有.

推荐答案

All 下面的代码仅适用于单个产品页面上的可变产品.

All The code below will work for variable products only on single product pages.

我之前制作的链接答案中的第二个代码效果很好.我做了一些小改动,只针对可变产品.

The 2nd code from the linked answer that I have made before, just works perfectly. I have made some little changes to target only variable products.

我添加了一个附加的挂钩函数,该函数将仅删除可变产品标题下的显示价格.

I have added an additional hooked function that will remove the displayed price under the title for variable products only.

这里是所有需要的代码:

Here is all the needed code:

// Always Display the selected variation price for variable products (already working)
add_filter( 'woocommerce_show_variation_price', 'filter_show_variation_price', 10, 3 );
function filter_show_variation_price( $condition, $product, $variation ){
    if( $variation->get_price() === "" ) return false;
    else return true;
}

// Remove the displayed price from variable products in single product pages only
add_action( 'woocommerce_single_product_summary', 'remove_the_displayed_price_from_variable_products', 9 );
function remove_the_displayed_price_from_variable_products() {
    global $product;

    // Just for variable products
    if( ! $product->is_type('variable') ) return;

    // Remove the displayed price from variable products
    remove_action( 'woocommerce_single_product_summary', 'woocommerce_template_single_price', 10 );
}

// Display the selected variation discounted price with the discounted percentage for variable products
add_filter( 'woocommerce_format_sale_price', 'woocommerce_custom_sales_price', 10, 3 );
function woocommerce_custom_sales_price( $price, $regular_price, $sale_price ) {
    global $product;

    // Just for variable products on single product pages
    if( $product->is_type('variable') && is_product() ) {
    
        // Getting the clean numeric prices (without html and currency)
        $regular_price = floatval( strip_tags($regular_price) );
        $sale_price = floatval( strip_tags($sale_price) );
    
        // Percentage calculation and text
        $percentage = round( ( $regular_price - $sale_price ) / $regular_price * 100 ).'%';
        $percentage_txt = __(' Save ', 'woocommerce' ).$percentage;
    
        return '<del>' . wc_price( $regular_price ) . '</del> <ins>' . wc_price( $sale_price ) . $percentage_txt . '</ins>';
    }
    return $price;
}

代码位于您的活动子主题(或主题)的 functions.php 文件或任何插件文件中.

Code goes in functions.php file of your active child theme (or theme) or also in any plugin file.

此代码经过测试,主要适用于 WooCommerce 版本 3+

This code is tested and mostly works only for WooCommerce version 3+

这篇关于在 WooCommerce 中选择的变体销售价格后显示折扣百分比的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆