• Вопрос без рабочей ссылки на проблему считается риторическим. Без ссылки и скриншота - провокацией!
  • Темы озаглавленные с маленькой буквы или капсом удаляются без предупреждения!

Решено Задвоение цены Вариативного товара

neGODnic

Форумчанин
С обычными товарами все хорошо. А вот с Вариативными идет задвоение цены.
т.е. цена в карточке товара отображается дважды:
1. Цена от 40 руб. (основная) и ниже идет цена уже товара с вариациями 2. Цена 90 руб. (цена вариантов)

Как скрыть 1ую (основную цену), если товар Вариативный? но в остальных товарах этого не делать.
Т.е. данная цена должна скрываться только в случае с вариативными товарами!
Тема Electro

Нашел вот такой вариант, но он отключат полностью "цена от" по всему сайту. А нужно только в карточке товара.
Код:
add_filter( 'woocommerce_variable_sale_price_html', 'my_remove_variation_price', 10, 2 );
add_filter( 'woocommerce_variable_price_html', 'my_remove_variation_price', 10, 2 );

function my_remove_variation_price( $price ) {
$price = '';
return $price;
}
Также нашел что можно использовать условные функции, но очень мало информации. Чтото вроде:
Код:
add_filter('woocommerce_variable_price_html', 'mycustom_variation_price', 10, 2);
add_filter('woocommerce_variable_sale_price_html', 'mycustom_variation_price', 10, 2 );

function mycustom_variation_price( $price, $product ) {
    if ( ! is_admin() && ((is_shop() || is_product_category() || is_page()))) {
     $price = '';
     $price .= woocommerce_price($product->get_price());
    }
    return $price;
}
Теперь это нужно както объединить, что бы цена убиралась только на карточке товара, либо показывалась везде, кроме карточки товара.
 

Вложения

Последнее редактирование:

neGODnic

Форумчанин
Для себя решил таким способом, пришлось разбираться с IF и Условными функциями. У меня работает. Если кому то нужно отключить в других категориях и вкладках, разбирайтесь с Условными функциями.
Код:
add_filter('woocommerce_variable_price_html', 'mycustom_variation_price', 10, 2);
add_filter('woocommerce_variable_sale_price_html', 'mycustom_variation_price', 10, 2 );
 
function mycustom_variation_price( $price ) {
    if ( is_product()) { /*выбираем "карточку товара"*/
     $price = ''; /* обнуляем значение цены*/
    }
    return $price; /*возвращаем уже пустое*/
}
Расскажу вкратце: is_product - if действует только на эту вкладку товаров. Весь остальной сайт, он не трогает. Можно добавить is_shop() || is_product_category() и прочии условия - так отключится еще в магазине и в категориях.
Если сделать if (! is_product()) - то функция будет действовать наоборот, отменять везде кроме перечисленных функций. В данном случае цена будет отображаться только в Карточке товара.

З.Ы. Еще CSS мне пришлось поправить, убрать отступы, рамки и прочее.

В соседней ветке была другая задача, но помогла в решении вопроса тут

Нашелся глюк... Если в карточке товара, есть новинки, распродажи и прочие элементы, где может попасться Вариативный товар с ценой... то цена у этого товара тоже пропадает. Но это только для вариативных товаров и только в карточке. В других местах все ок.
Ищу решения. Походу в IF нужно еще какие-то условия добавить.
 
Последнее редактирование:
  • Like
Реакции: D&B
Сверху Снизу