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

Оформить заказ на товар с нулевой ценой

ase301

Новичок
В магазине мебели часть товара без цены. Например, наборы мебели для кухни. Комплект подбирается по размеру кухни и желанию покупателя менеджером непосредственно в магазине.
Заказ товара через интернет магазин дает право на скидку в 10%.
Проверял на темах StoreFront и TopShop, если товар без цены, то неактивна кнопка "Добавить в корзину". Нет товара в корзине нет возможности оформить и отправить заказ. Можно ли выйти из положения?
 

ase301

Новичок
Да, действительно. Поставил 0 - в каталоге товаров вместо цены под миниатюрой товара появилась надпись "Бесплатно". На странице товара аналогично и кнопка "Добавить в корзину" стала доступна. Отлично. Текст "Бесплатно" на странице товара я заменю.
Вот теперь вопрос, как убрать надпись "Бесплатно" в каталоге товаров ?
 

axr

Новичок
ответ тут: https://wpcommerce.ru/threads/tovar-s-nulevoj-cenoj.1833/

добавьте в functions.php вашей темы

add_filter( 'woocommerce_variable_free_price_html', 'hide_free_price_notice' );
add_filter( 'woocommerce_free_price_html', 'hide_free_price_notice' );
add_filter( 'woocommerce_variation_free_price_html', 'hide_free_price_notice' );
/**
* Hides the 'Free!' price notice
*/
function hide_free_price_notice( $price ) {
return 'ваша замена слова Бесплатно';
}
 

a.kalugin

Форумчанин
Добрый день, столкнулся так же с необходимостью делать возможность оформлять заказ на товар без цены, и чтобы появилась кнопка "добавить в корзину" установил нулевую цену на товар. При этом у меня нету надписи "Бесплатно" а просто стоит 0,00 Р . Чтобы заменить эту надпись пробовал вышеуказанный код, но он не сработал. Мне нужно мои нули заменить на текст "по запросу", т.е. цена будет по запросу, но с возможностью добавить товар в корзину для дальнейшего оформления менеджером.
В соседней теме подсмотрел код для вывода данного текста, к товару без цены
PHP:
// для пустой цены выводить "цена по запросу"
function my_price_replace($price, $_product) {
    if ($_product->get_price() == 0)  return __( 'по запросу' );
    return $price;
}
данный код работает, если цена вообще не установлена. Но когда цена не установлена вообще, то товар нельзя добавить в корзину, нету соответствующей кнопки :(
 

a.kalugin

Форумчанин
Рабочее решение:
PHP:
//для пустой цены выводить "цена по запросу"
add_filter('woocommerce_empty_price_html', 'empty_price_message');
function empty_price_message() {
    return 'цена по запросу';
}
//для нулевой цены выводить "цена по запросу"
function my_price_replace($price, $product) {
    if ($price == 0)  return __( 'цена по запросу' );
    return $price;
}
add_filter( 'woocommerce_get_price_html', 'my_price_replace', 1, 2 );
и все, текст выводится, заказ оформляется :)
 

a.kalugin

Форумчанин
короче рано радовался - теперь абсолютно все цены на товары выводятся как "цена по запросу", не важно цена на него 0 или 77 руб.
я конечно мало в этом понимаю, но вроде функция правильно стоит:
PHP:
если (цена=0) то выводим ( "цена по запросу" )
 

a.kalugin

Форумчанин
Нашел рабочее решение - и для товаров без цены, и с нулевой ценой. Работает корректно
PHP:
function my_price_replace($price, $product) {
if ($product->get_price() == 0 ) return __( 'по запросу' );
return $price;
}
add_filter( 'woocommerce_get_price_html', 'my_price_replace', 1, 2 );
 

Iskandernow

Новичок
Нашел рабочее решение - и для товаров без цены, и с нулевой ценой. Работает корректно
PHP:
function my_price_replace($price, $product) {
if ($product->get_price() == 0 ) return __( 'по запросу' );
return $price;
}
add_filter( 'woocommerce_get_price_html', 'my_price_replace', 1, 2 );
Видимо не на всех сайтах работает этот код(
 

zebrahead

Новичок
Нашел рабочее решение - и для товаров без цены, и с нулевой ценой. Работает корректно
PHP:
function my_price_replace($price, $product) {
if ($product->get_price() == 0 ) return __( 'по запросу' );
return $price;
}
add_filter( 'woocommerce_get_price_html', 'my_price_replace', 1, 2 );

Заработало это решение. Подскажите, а как можно реализовать это же (вместо 0 р. - "Запрос цены") для виджета корзины, самой корзины, заказа и, соответственно, письма?
 

can_do

Новичок
Нашел рабочее решение - и для товаров без цены, и с нулевой ценой. Работает корректно
PHP:
function my_price_replace($price, $product) {
if ($product->get_price() == 0 ) return __( 'по запросу' );
return $price;
}
add_filter( 'woocommerce_get_price_html', 'my_price_replace', 1, 2 );
Правда рабочее решение, но не работает вместе с WPML
 
Сверху Снизу