php - 定制产品销售闪光徽章

标签 php wordpress woocommerce product badge

我正在尝试使用下面的此代码段在销售闪存徽章上添加总节省金额,但由于它不起作用,所以出现了问题。 任何建议将不胜感激。

// 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 );
}

谢谢

最佳答案

Added WC 3+ compatibility

您的过滤器中没有正确的参数(例如,$price 不存在),请在此处查看 woocommerce_sale_flash 的相关源代码过滤钩子(Hook)以更好地理解:

/* 
 *  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 ); ?>

因此您的工作代码将类似于:

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 文件中或任何插件文件中。

此代码已经过测试并且可以工作。

关于php - 定制产品销售闪光徽章,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42883944/

相关文章:

javascript - 试图在 jQuery 上隐藏一个 H3 有点复杂的 css 结构

php - 使 WooCommerce 结帐运输字段可见并删除 "Ship to different address?"复选框

php - 在安装了 Woocommerce 的情况下启用 Wordpress 工具栏

jquery - WooCommerce 和 SimpleModal - 如何列出类别中的产品

php - 无法使用 apt-get 安装 PHP 包,给出 "E: Unable to locate package"

centos - phpinfo() 在我的 CentOS 服务器上不工作

javascript - 在 WordPress 管理小部件表单中使用时,AngularJS 不更新 View

javascript - 获取新内容后重新加载脚本(无限滚动 wordpress + fancybox)

php - 如何在 LIMIT 子句中应用 bindValue 方法?

javascript - 使用 jquery Ajax 和 php 脚本从 mysql 检索数据时出现问题