WooCommerce costum meta_key

Я хотел бы добавить кастом meta_key стоимость каждого продукта WooCommerce. Это будет ставка дисконта:

_discount_rate = ((_sale_price-_regular_price_)/(_regular_price)*100)

Я пытаюсь выяснить, как добавить фильтр в функцию WooCommerce woocommerce_process_product_meta Что-то вроде:

add_filter('woocommerce_process_product_meta', 'mytheme_product_save_discountrate');

function mytheme_product_save_discountrate($post_id) {

if (get_post_meta($post_id, "_sale_price")) {

$regular_price = get_post_meta($post_id, "_regular_price");
$sale_price = get_post_meta($post_id, "_sale_price");

$discount_rate = ($sale_price - $regular_price) / $regular_price * 100);

update_post_meta($post_id, '_discount_rate', $discount_rate);
}
}

Я просто не уверен, как я могу получить обычные и продажные цены?

1

Решение

WooCommerce имеет встроенные методы, чтобы получить цену
get_regular_price() а также get_sale_price(),

Вот код:

add_action('woocommerce_process_product_meta', 'mytheme_product_save_discountrate', 999); //<-- check the priority

function mytheme_product_save_discountrate($post_id) {

$_product = wc_get_product($post_id);
$regular_price = $_product->get_regular_price();
$sale_price = $_product->get_sale_price();
//    $_product->get_price();

if (!empty($sale_price)) {
$discount_rate = (($sale_price - $regular_price) / ($regular_price)) * 100; //replace it with your own logic
update_post_meta($post_id, '_discount_rate', $discount_rate);
}
}

Код входит в functions.php файл вашей активной дочерней темы (или темы). Или также в любом плагине PHP-файлов.
Код протестирован и работает.

Надеюсь это поможет!

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]