WooCommerce过滤器:促销百分比

时间:2017-08-19 03:43:06

标签: php wordpress woocommerce

我正在尝试创建一个PHP函数,我可以将其插入到Wordpress中的functions.php文件中(使用WooCommerce插件,Storefront Theme)。我在网上发现了两段代码,它们分别代表了我想要实现的一部分,但我不知道如何将它们组合在一起。只是一个免责声明我不知道如何读取或编写PHP非常好。

希望这张图片有助于清理我想要实现的目标。左侧表示使用第一段代码时页面的外观,右侧表示在组合两段代码时我希望页面的外观: Before/After Filter

下面看到的第一段代码正确地采用了产品的正常价格和销售价格,然后计算了客户将获得的折扣。最终结果是一个字符串,表示例如“22%折扣”。问题是此字符串是在显示价格后插入的,而不是在销售横幅本身中插入的。

function woocommerce_saved_sales_price( $price, $product ) {
$percentage = round( ( ( $product->regular_price - $product->sale_price ) / $product->regular_price ) * 100 );
return $price . sprintf( __('%s', 'woocommerce' ), $percentage . '% OFF' );
}
add_filter( 'woocommerce_get_price_html', 'woocommerce_saved_sales_price', 10, 2 );

第二段代码实际上编辑了我试图更改的销售横幅,但我不知道如何让它包含其他过滤器实现的计算折扣。

add_filter( 'woocommerce_sale_flash', 'wc_custom_replace_sale_text' );
function wc_custom_replace_sale_text( $html ) {
return str_replace( __( 'Sale!', 'woocommerce' ), __( 'SALE! [INSERT % OFF OUTPUT HERE]', 'woocommerce' ), $html );
}

1 个答案:

答案 0 :(得分:2)

我认为第二段代码应该是

add_filter( 'woocommerce_sale_flash', 'wc_custom_replace_sale_text' );
function wc_custom_replace_sale_text( $html ) {
  global $product;
  //$product = wc_get_product( $product->get_id() );
  $percentage = round( ( ( $product->get_regular_price() - $product->get_sale_price() ) / $product->get_regular_price() ) * 100 );
  return str_replace( __( 'Sale!', 'woocommerce' ), __( 'SALE! ', 'woocommerce' ).$percentage.'% OFF', $html );
}

经过测试和工作