我需要帮助强制更新我的产品sale_price,使其比普通价格低65%。
我需要这个实际更改,因此显示挂钩不会工作,因为我使用插件,插件从数据库中的_sale_price列获取数据变化。
如截图所示: Screenshots
我使用了这段代码:
/**
* FORCE EDIT SALES PRICE
*/
// Generating dynamically the product "regular price"
add_filter( 'woocommerce_product_get_regular_price', 'custom_dynamic_regular_price', 10, 2 );
add_filter( 'woocommerce_product_variation_get_regular_price', 'custom_dynamic_regular_price', 10, 2 );
function custom_dynamic_regular_price( $regular_price, $product ) {
wc_delete_product_transients($product->get_id());
if( empty($regular_price) || $regular_price == 0 )
return $product->get_price();
else
return $regular_price;
}
// Generating dynamically the product "sale price"
add_filter( 'woocommerce_product_get_sale_price', 'custom_dynamic_sale_price', 10, 2 );
add_filter( 'woocommerce_product_variation_get_sale_price', 'custom_dynamic_sale_price', 10, 2 );
function custom_dynamic_sale_price( $sale_price, $product, $variation ) {
$discount = 0.35;
if( $sale_price != 0 )
return $product->get_regular_price() * $discount;
else
return $product->get_regular_price();
};
// Displayed formatted regular price + sale price
add_filter( 'woocommerce_get_price_html', 'custom_dynamic_sale_price_html', 20, 2 );
function custom_dynamic_sale_price_html( $price_html, $product ) {
if( $product->is_type('variable') ) return $price_html;
$price_html = wc_format_sale_price( wc_get_price_to_display( $product, array( 'price' => $product->get_regular_price() ) ), wc_get_price_to_display( $product, array( 'price' => $product->get_sale_price() ) ) ) . $product->get_price_suffix();
return $price_html;
}
// pass it on to cart
add_action('woocommerce_before_calculate_totals','set_cart_item_sale_price',10, 1);
function set_cart_item_sale_price ($cart) {
if (is_admin() && !defined('DOING_AJAX') )
return;
foreach($cart->get_cart() as $cart_item) {
$price = $cart_item['data'] -> get_sale_price();
$cart_item['data'] -> set_price($price);
}
}
该代码来自此处:
Set product sale price programmatically in WooCommerce 3
Wrong Woocommerce cart item price after setting programmatically product sale price
通过这样做我网站上的价格, Website Screenshots
顶部和底部的价格仍然是50%的折扣,而底部的价格是正确的。
我希望我的解释足够清楚。 请原谅英语不好。
谢谢。