我使用了一些代码来显示Woocommerce存档页面上的折扣价格:
add_filter( 'woocommerce_get_price_html', 'display_savings_as_price_and_percentage', 10, 2 );
//add_filter( 'woocommerce_variable_price_html','display_savings_as_price_and_percentage', 10, 2 );
function display_savings_as_price_and_percentage( $price, $product ) {
if( $product->is_on_sale() && ! is_admin() && ! $product->is_type('variable')){
$product_price = (float) $product->get_regular_price();
$sale_price = (float) $product->get_price();
$save_price = wc_price( $product_price - $sale_price );
$save_percentage = round( 100 - ( $sale_price / $product_price * 100 ), 1 ) . '%';
$price .= sprintf( __('<p class="saved-on-sale">Save: %s (%s)</p>', 'woocommerce' ), $save_price, $save_percentage );
}
return $price;
}
档案页折扣:
但它对可变产品不起作用,我已经尝试了我找到的每一个钩子,但我不知道如何使它对可变产品起作用。(我在代码中注释掉了变量的钩子)。
这是我想要的:
如果变量的价格跨度为10-20,折扣为10-15,我希望它像这样显示,并将默认价格划掉:
如何用节省金额和百分比替换可变产品的在售产品价格?
以下代码将处理简单的和可变的在售产品:
add_filter( 'woocommerce_get_price_html', 'display_savings_price_and_percentages', 20, 2 );
function display_savings_price_and_percentages( $price_html, $product ) {
// Only on frontend and for on sale products
if( is_admin() || ! $product->is_on_sale() )
return $price_html;
// Only on archives pages
if( ! ( is_shop() || is_product_category() || is_product_tag() ) )
return $price_html;
// Variable product type
if( $product->is_type('variable')){
$percentages = $savings = array(); // Initializing
// Get all variation prices
$prices = $product->get_variation_prices();
// Loop through variation prices
foreach( $prices['price'] as $key => $price ){
// Only on sale variations
if( $prices['regular_price'][$key] !== $price ){
// Calculate and set in the array the percentage for each variation on sale
$percentages[] = round(100 - ($prices['sale_price'][$key] / $prices['regular_price'][$key] * 100), 1 );
// Calculate and set in the array the savings for each variation on sale
$savings[] = $prices['regular_price'][$key] - $prices['sale_price'][$key];
}
}
$save_price = wc_price( max($savings) );
if( min($percentages) !== max($percentages) ){
$save_percentage = min($percentages) . '-' . max($percentages) . '%';
$save_text = __( 'Save up to:', 'woocommerce' );
} else {
$save_percentage = max($percentages) . '%';
$save_text = __( 'Save:', 'woocommerce' );
}
}
// All other product types
else {
$regular_price = $product->get_regular_price();
$sale_price = $product->get_sale_price();
$save_price = wc_price( $regular_price - $sale_price );
$save_percentage = round( 100 - ( $sale_price / $regular_price * 100 ), 1 ) . '%';
$save_text = __( 'Save:', 'woocommerce' );
}
return '<p class="saved-on-sale">' . sprintf( '%s %s (%s)', $save_text, $save_price, $save_percentage ) . '</p>';
}
代码放在您的活动子主题(或活动主题)的function.php文件中。经过测试并起作用。
我有大约10个产品和接近200个变体每一个。我需要更新特定产品的销售价格,包括它的所有变化。 问题是: 所有的变种都有不同的价格。未输入销售价格-所有销售价格输入框均为空。 我需要一个SQL解决方案运行和更新所有特定产品的销售价格,采取常规价格并从中扣除350,或 任何其他方式,我不知道在这个阶段,因为我已经尝试了许多解决方案,包括Woocommerce内置的解决方案“设置销售价格”,再次不工作,
我目前有一个表单,管理员可以在一个屏幕内批量更新产品的销售价格。 提交表格时,我只需使用这样的update_post_meta: 这将更新_sale_price元键。当我进入管理检查这一点,新的销售价格已经插入。当我在前端查看产品时,该产品未标记为正在销售。我必须回去重新保存产品。 我的问题是,伍兹商业是否添加了一些其他meta_key来标记产品在售?我在数据库中为所有插入的自定义字段进行了一次挖
我有一个Woocommerce商店,里面有各种各样的产品。 我要给所有产品打八折,属于产品类别Cuckoo 现在我所要做的就是在我的functions.php中设定一个销售价格 它的做法如下: 如果我在计算后var_dump$sale_price的结果,我会得到正确的答案,但是前端的价格显示会击出正常价格,并将销售价格显示为正常价格。 是否有一个钩子/过滤器可以用来实现这一点? 我还尝试通过以下方
问题内容: 我在主题中有此代码以显示价格后的百分比,并且在WooCommerce v2.6.14中运行良好。 但是此代码段在WooCommerce 3.0+版本上不再起作用。 我该如何解决? 这是该代码: 问题答案: 更新 -2019 (避免四舍五入的价格问题) -2017 (避免百分比值) 在WooCommerce 3.0+中,该钩子已替换为另一个钩子,该钩子现在具有3个参数(但不再有该 参数)
当存在销售价格时,如何用销售价格替换常规价格 我尝试使用此代码 但当产品不在销售时,可见的价格是0.00
重新创建此问题的步骤: 创建可变产品 我正在使用Woocommerce v2。6.14和Wordpress v4。7.6. 如果我尝试检查