首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >定制产品销售闪存徽章

问定制产品销售闪存徽章
EN

Stack Overflow用户
提问于 2017-03-19 07:14:33
回答 1查看 4.1K关注 0票数 3

我试图添加金额总额在销售闪存徽章使用下面的片段,但有一些错误,因为它是不工作的。任何建议都将不胜感激。

代码语言:javascript
复制
// Add save amount on the sale badge.
add_filter( 'woocommerce_sale_flash', 'woocommerce_custom_badge', 10, 2 );
function woocommerce_custom_badge( $price, $product ) {
$saved = wc_price( $product->regular_price - $product->sale_price );
return $price . sprintf( __(' <div class="savings">Save %s</div>', 'woocommerce' ), $saved );
}

谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-03-19 17:55:06

添加WC 3+兼容性

例如,您的过滤器($price中没有正确的参数),请参阅woocommerce_sale_flash过滤器钩子的相关源代码,以便更好地理解:

代码语言:javascript
复制
/* 
 *  The filter hook woocommerce_sale_flash is located in:
 *  templates/loop/sale-flash.php and templates/single-product/sale-flash.php 
 */ 

<?php if ( $product->is_on_sale() ) : ?>

<?php echo apply_filters( 'woocommerce_sale_flash', '<span class="onsale">' . esc_html__( 'Sale!', 'woocommerce' ) . '</span>', $post, $product ); ?>

因此,您的工作代码将是这样的:

代码语言:javascript
复制
add_filter( 'woocommerce_sale_flash', 'woocommerce_custom_badge', 10, 3 );
function woocommerce_custom_badge( $output_html, $post, $product ) {

    // Added compatibility with WC +3
    $regular_price = method_exists( $product, 'get_regular_price' ) ? $product->get_regular_price() : $product->regular_price;
    $sale_price = method_exists( $product, 'get_sale_price' ) ? $product->get_sale_price() : $product->sale_price;

    $saved_price = wc_price( $regular_price - $sale_price );
    $output_html = '<span class="onsale">' . esc_html__( 'Save', 'woocommerce' ) . ' ' . $saved_price . '</span>';

    return $output_html;
}

代码在活动子主题(或主题)的function.php文件中,或者在任何插件文件中。

这段代码是经过测试和工作的。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42883944

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档