Супербыстрый хостинг на SSD от 115р в месяц   •   Реклама
1 388 просм
12 комм
Поделиться:

Дробное количество товара в WooCommerce

На данный момент существует большое количество разнообразных интернет-магазинов. Одни продают электронные товары (ключи для игр, книги, фильмы и прочее), другие же реализуют материальную продукцию – стулья, столы, различную технику. Все эти товары продаются поштучно, что вполне логично для такого типа товаров. Но если вы продаете обои, различные сыпучие материалы или, например, чай, то там в распоряжении покупателя должна быть не только сама продукция, но и ее определенная единица. Например, 10 метров, 300 граммов и прочее.

По умолчанию, в CMS WordPress, а именно в ее дополнении WooCommerce нет поддержки дробного количества товаров, и готовых плагинов, решая эту задачу, я также не смог найти, за исключением нескольких, которые во много усложняют процесс реализации.

А зачем, собственно, усложнять, когда можно сделать все как никогда просто? Для реализации этой задачи вам потребуется воспользоваться парой несложных функций. А именно:

function min_decimal($val) {

    return 0.5; // Минимальное значение
	
}

add_filter("woocommerce_quantity_input_min", "min_decimal");

и

function step_decimal($val) {

    return 0.5; // Шаг
	
}

add_filter("woocommerce_quantity_input_step", "step_decimal");

Их вы вставляете в низ файла functions.php, который находится в папке вашей темы.

Первая функция позволяет задать минимальное количества товара (в нашем случае – это 0,5), а вторая – шаг увеличения/уменьшения количества товара. Скрипт работает как в карточке товара, так и в корзине пользователя.

А для того, чтобы удалить стандартную проверку на корректность введенного числа (без отключения дробные числа будут считаться ошибочными), в низ все того файла functions.php вы вставляете:

// Удаление и добавление своего фильтра проверки количества

remove_filter("woocommerce_stock_amount", "intval");
add_filter("woocommerce_stock_amount", "floatval");

По необходимости вид дробного числа (количество знаков после запятой) и его размер вы можете задать сами в первых двух функциях.

12
комментариев
Гостям запрещено участвовать в обсуждениях сайта. Авторизуйтесь, чтобы расширить привилегии гостевого посещения и получить необходимую помощь от сообщества Pandoge.

Ан Ку, можете через комментарии, можете через форму обратной связи.

  • 0
2.08 в 10:48

Функция проблему не решила. Попробовал сделать то же самое через плагин. Работает только в том случае, когда заменяешь свои кнопки +/- на кнопки из плагина (там есть чекбокс на замену стандартных своими).

Не совсем понятно как отправить личное сообщение с доступами.

  • 0

Ан Ку, а вообще, разве функция:

function step_decimal($val) {

return 0.5; // Шаг

}

add_filter("woocommerce_quantity_input_step", "step_decimal");

не решила Вашу проблему?

  • 1

Ан Ку,

> Где именно это правится не подскажу, так как под рукой нет сайта с Woo.

Можете предоставить доступы к вашему сайту (Админка + FTP), тогда хоть как-то смогу Вам помочь.

  • 1
1.08 в 09:42

Попробовал менять значение шага, не помогло. Был бы очень признателен, если бы подсказали где править увеличение/уменьшение.cry

  • 0

Здравствуйте, Артем. Спасибо за оперативность.Сайт в разработке на localhost. До момента выбора вариации товара (ткань метражом, рулоном и т.п.) минимальное значение срабатывает, но нужно выбрать вариацию чтобы добавить в корзину. - вот на этом шаге и выскакивает "Значение должно быть больше или равно 1"

  • 0

Семен Кирилов, по хорошему бы, доступы к проблемному сайту, тогда точно смогу сказать в чем проблема.

  • 1

Ан Ку, нужно поправить шаг, всего скорее, с которым идет увеличение / уменьшение значения.

Где именно это правится не подскажу, так как под рукой нет сайта с Woo.

  • 0

Здравствуйте, Артем. Спасибо большое! Однако, вариативный товар невозможно выбрать 0,5, требует только от 1, однако шаг в 0,5 работает, правда начиная с 1,5. Не подскажете в какую сторону копать?

  • 0
17.07 в 09:07

Добрый день.

Хороший гайд, давно искал как сделать дробные значения. Но одна проблема - перестали работать кнопки увеличения и уменьшения количества товара (на карточке товара и в корзине).

  • 0

Ром, здравствуйте. Скоро на сайте будет статья, посвященная переоценке товаров в корзине. Думаю, что она сможет помочь с вашей проблемой.

  • 0
21.06 в 06:05

Привет, Артем. У нас линолеум. Мы сложно реализовали подсчет длины*ширины*цены плагином с кучей костылей.

Может вы подскажите, как упростить.

Как сделать чтобы атрибуты умножались на поле "колво" , которое у нас как длина, и на цену(базовая/распродажная)

Сейчас атрибуты просто плюсуются. Например у нас в атрибутах ширина линолеума, 3.5. Как атрибут умножить на длину, которую пользователь вводит?

Сейчас сделано через плагин Woo Price, а от него одни беды на сайте. Куча глюков и прочих костылей. Разве нельзя сделать проще? Надо то чтобы умножалось на значение атрибута.

При этом, у нас есть товар, атрибуты которого умножать не надо, типа обычный выбор цвета.

То есть есть товар где следует умножать значение атрибута, а где нет.

  • 0
Подняться наверх
«Pandoge» - помощник веб-мастера