Woocomerce - как изменить sale price по математической формуле?
На сайте есть категория товаров "Распродажа". У этих товаров есть только обычная цена, к ним нужно добавить sale price по формуле (обычная цена * 1,5). Как такое можно реализовать через код? Пересмотрел кучу плагинов - ни один из них не подошел для этой задачи.. Есть такой (https://codecanyon.net/item/woocommerce-fake-discounts/21634550), но он давно не обновлялся и нет демо, чтобы посмотреть его в работе...
Дополняю
Есть товар, его стоимость, допустим, 100 руб. Мне нужно, чтобы цена (100*1,5) стала перечеркнутой, а цена продажи так и осталась 100руб. И это все в рамках 1 категории..
Ответы (1 шт):
Используйте фильтры woocommerce_product_get_regular_price и woocommerce_product_get_sale_price.
/**
* Calculate regular price.
*
* @param mixed $price Price.
* @param WC_Product $product Product.
*
* @return mixed
*/
function calc_regular_price( $price, $product ) {
$cat_id = 5;
$cat_ids = $product->get_category_ids();
if ( ! in_array( $cat_id, $cat_ids, true ) ) {
return $price;
}
return $price * 1.5;
}
add_filter( 'woocommerce_product_get_regular_price', 'calc_regular_price', 10, 2 );
/**
* Calculate sale price.
*
* @param mixed $price Price.
* @param WC_Product $product Product.
*
* @return mixed
*/
function calc_sale_price( $price, $product ) {
$cat_id = 5;
$cat_ids = $product->get_category_ids();
if ( ! in_array( $cat_id, $cat_ids, true ) ) {
return $price;
}
remove_filter( 'woocommerce_product_get_regular_price', 'calc_sale_price', 10, 2 );
$price = $product->get_regular_price();
add_filter( 'woocommerce_product_get_regular_price', 'calc_sale_price', 10, 2 );
return $price;
}
add_filter( 'woocommerce_product_get_sale_price', 'calc_sale_price', 10, 2 );