Хук woocommerce_get_price не работает для цены вариаций товаров в WooCommerce
11 июл. 2018 г., 15:35:18
Просмотры: 17.9K
Голосов: 2
Я изменил цену товара для пользователей, вошедших в систему с ролью "реселлер". Это работает для обычных товаров, но не работает для вариаций товаров.
Например, цена вариации товара 50мл составляет 9.20. Реселлер должен платить 6.16 (9.20 * 0.67). Однако вариация товара по-прежнему показывает цену 9.20.
Фильтр-хук:
function pr_reseller_price( $price, $product ) {
if ( ! is_user_logged_in() )
return $price;
// Функция проверяет, является ли пользователь реселлером
if ( pr_has_role( 'reseller' ) ) {
$price = $price * 0.67;
}
return $price;
}
add_filter( 'woocommerce_get_price', 'pr_reseller_price', 10, 2 );
add_filter( 'woocommerce_get_regular_price', 'pr_reseller_price', 10, 2 );
add_filter( 'woocommerce_get_sale_price', 'pr_reseller_price', 10, 2 );
Обычный товар vs Вариация товара
// Обычный товар
$product_id = 69;
$product = wc_get_product( $product_id );
echo $product->get_price(); // Возвращает 6.16 (9.20 * 0.67)
// Вариация товара
$variations = $product->get_available_variations();
$variation = new WC_Product_Variation( $variations[0]['variation_id'] );
echo $variation->get_price(); // Возвращает 9.20

Robbert
1.28K
Все ответы на вопрос
1
0
Мне также пришлось добавить фильтр для вариаций товаров.
// Добавляем фильтры для получения цены товара и вариаций
add_filter( 'woocommerce_product_get_price', 'pr_reseller_price', 10, 2 );
add_filter( 'woocommerce_product_variation_get_price', 'pr_reseller_price', 10, 2 );
add_filter( 'woocommerce_product_get_regular_price', 'pr_reseller_price', 10, 2 );
add_filter( 'woocommerce_product_get_sale_price', 'pr_reseller_price', 10, 2 );

Robbert
1.28K
11 июл. 2018 г. 17:27:57
Похожие вопросы
4
ответов