当前位置: 首页 > 面试题库 >

在WC 3.0+的单一产品页面中显示接近销售价格的折扣百分比

时同
2023-03-14
问题内容

我在function.php主题中有此代码以显示价格后的百分比,并且在WooCommerce v2.6.14中运行良好。

但是此代码段在WooCommerce 3.0+版本上不再起作用。

我该如何解决?

这是该代码:

// Add save percent next to sale item prices.
add_filter( 'woocommerce_sale_price_html', 'woocommerce_custom_sales_price', 10, 2 );
function woocommerce_custom_sales_price( $price, $product ) {
    $percentage = round( ( ( $product->regular_price - $product->sale_price ) / $product->regular_price ) * 100 );
    return $price . sprintf( __(' Save %s', 'woocommerce' ), $percentage . '%' );
}

问题答案:

更新 -2019 (避免四舍五入的价格问题) -2017 (避免NAN%百分比值)

woocommerce_sale_price_html 在WooCommerce
3.0+中,该钩子已替换为另一个钩子,该钩子现在具有3个参数(但不再有该 $product 参数)。

add_filter( 'woocommerce_format_sale_price', 'woocommerce_custom_sales_price', 10, 3 );
function woocommerce_custom_sales_price( $price, $regular_price, $sale_price ) {
    // Getting the clean numeric prices (without html and currency)
    $_reg_price = floatval( strip_tags($regular_price) );
    $_sale_price = floatval( strip_tags($sale_price) );

    // Percentage calculation and text
    $percentage = round( ( $_reg_price - $_sale_price ) / $_reg_price * 100 ).'%';
    $percentage_txt = ' ' . __(' Save ', 'woocommerce' ) . $percentage;

    $formatted_regular_price = is_numeric( $regular_price ) ? wc_price( $regular_price ) : $regular_price;
    $formatted_sale_price    = is_numeric( $sale_price )    ? wc_price( $sale_price )    : $sale_price;

    echo '<del>' . $formatted_regular_price . '</del> <ins>' . $formatted_sale_price . $percentage_txt . '</ins>';
}

这段代码会出现在您活动的子主题(或主题)的function.php文件中,也可能会出现在任何插件文件中。
该代码已经过测试并且可以工作。对于WooCommerce 3.0+版本 (感谢@Mikebcn和@AsifRao)

要舍入百分比,可以使用round()number_format()number_format_i18n()

$percentage = number_format_i18n( ( $_reg_price - $_sale_price ) / $_reg_price * 100, 0 ).'%';

$percentage = number_format( ( $_reg_price - $_sale_price ) / $_reg_price * 100, 0 ).'%';

原始答案代码: 这是功能相似的代码:

// Only for WooCommerce version 3.0+
add_filter( 'woocommerce_format_sale_price', 'woocommerce_custom_sales_price', 10, 3 );
function woocommerce_custom_sales_price( $price, $regular_price, $sale_price ) {
    $percentage = round( ( $regular_price - $sale_price ) / $regular_price * 100 ).'%';
    $percentage_txt = ' ' . __(' Save ', 'woocommerce' ) . $percentage;
    $price = '<del>' . ( is_numeric( $regular_price ) ? wc_price( $regular_price ) : $regular_price ) . '</del> <ins>' . ( is_numeric( $sale_price ) ? wc_price( $sale_price ) . $percentage_txt : $sale_price . $percentage_txt ) . '</ins>';
    return $price;
}

这段代码会出现在您活动的子主题(或主题)的function.php文件中,也可能会出现在任何插件文件中。
该代码已经过测试并且可以工作。对于WooCommerce 3.0+版本。



 类似资料:
  • 我正在寻找有关JavaScript的帮助。我们正在尝试计算并显示折扣前的价格与折扣后的价格之间的百分比差异。相关的类是.from_price和.for_price。价格是160,00和130,00。 所以我们尝试使用这段代码,但它不起作用: 非常感谢你的帮助!

  • 嗨,我正在尝试计算的百分比折扣的产品,在一个产品列表页上出售,有一个过去和现在的价格。 我已经有了用来获得百分比折扣的代码,但我似乎不能让它对每个产品动态地工作。目前,它将运行计算,然后打印每个产品的相同百分比折扣,即使是全价产品。 对此,我们将不胜感激。谢谢! null null

  • 我使用了一些代码来显示Woocommerce存档页面上的折扣价格: 档案页折扣: 但它对可变产品不起作用,我已经尝试了我找到的每一个钩子,但我不知道如何使它对可变产品起作用。(我在代码中注释掉了变量的钩子)。 这是我想要的: 如果变量的价格跨度为10-20,折扣为10-15,我希望它像这样显示,并将默认价格划掉: $40-$50 $20-$30 节省:20美元(40-50%) 如何用节省金额和百分

  • 我使用Woocommerce插件在wordpress中开发了购物车。我需要按产品价格在购物车订单中显示产品,请帮助我做到这一点 谢啦

  • 我有两张桌子。一个ID及其价格表和第二个每个ID折扣表。在折扣表中,一个Id可以有很多折扣,我需要知道一个Id的最终价格。 查询它的最佳方式是什么(在一次查询中)?对于每个id的许多折扣,查询应该是通用的(不仅仅是下面示例中提到的2个) 例如表1 表二 最终结果:

  • 使用最新版本的Woocommerce中的Mystile主题,我覆盖了variation.php以显示根据数量和选择的变化而定的折扣价格。我有3个属性:“marquage”,“couleurs”和“couleursàmarquer”。 这是我的php,添加在woocommerce_before_add_to_cart_form之后。 好吧,这很管用。这些行允许我捕获变量中的变化价格,目前仅限于Cou