Woocomerce - как изменить sale price по математической формуле?

На сайте есть категория товаров "Распродажа". У этих товаров есть только обычная цена, к ним нужно добавить sale price по формуле (обычная цена * 1,5). Как такое можно реализовать через код? Пересмотрел кучу плагинов - ни один из них не подошел для этой задачи.. Есть такой (https://codecanyon.net/item/woocommerce-fake-discounts/21634550), но он давно не обновлялся и нет демо, чтобы посмотреть его в работе...


Дополняю

Есть товар, его стоимость, допустим, 100 руб. Мне нужно, чтобы цена (100*1,5) стала перечеркнутой, а цена продажи так и осталась 100руб. И это все в рамках 1 категории..


Ответы (1 шт):

Автор решения: KAGG Design

Используйте фильтры 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 );
→ Ссылка