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

时间:2017-05-03 10:49:54

标签: php wordpress woocommerce hook-woocommerce discount

我在我的主题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 . '%' );
}

1 个答案:

答案 0 :(得分:11)

woocommerce_sale_price_html 挂钩已被WooCommerce 3.0+中的其他挂钩取代,现在有3个参数(但不是 $product 参数了)。

这是功能相似的代码:

// 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 +

  

更新以避免NAN%百分比值当常规和促销价格为html预格式化时:

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)
    $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>';
}

此代码包含活动子主题(或主题)的function.php文件或任何插件文件。

此代码已经过测试,仅适用于WooCommerce版本3.0+ (感谢@AsifRao)