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

Как разрешить покупку только упаковками в WooCommerce

Dmitriy M

Новичок

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

Разрешаем покупку только упаковками в WooCommerce
2014-06-03 | AmoSeo

Давайте представим, что вы держите магазин на WooCommerce, где вы продаете товары, которые поставляются в коробках, и хотите, чтобы покупатели самостоятельно формировали свои собственные «коробки» с различными товарами, в то время как WooCommerce по-умолчанию разрешает продавать вам товары в том количестве, которое вы установили для этого товара (например, 1шт), и покупатель может выбрать любое количество товара в свою корзину.

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

С помощью кода ниже вы можете указать для ваших товаров что каждый товар является одной бутылкой вина, а затем заставить покупателя добавить различные 6 товаров в корзину прежде чем ему станет доступна оплата. Если же покупатель, к примеру, добавит только 5 бутылок в корзину и затем попытается оплатить, ему отобразится уведомление о том, что необходимо купить 6 бутылок.



Разрешаем покупку только упаковками в WooCommerce

Можно даже реализовать это правило для товаров с определенным классом доставки, что позволит вам продавать бутылки поштучно, и в то же время по 6шт, главное грамотно всё разграничить.

Для того, чтобы вынудить покупателя добавить в корзину определенное количество товара прежде чем ему станет доступна оплата, добавьте следующий код в файл functions.php вашей темы или в плагин для сайта WordPress:
<?php


// Ограничиваем товары в корзине определенным классом доставки для покупки "целым ящиком"
add_action( 'woocommerce_check_cart_items', 'woocommerce_check_cart_quantities_for_class' );
function woocommerce_check_cart_quantities_for_class() {
global $woocommerce;
$multiples = 6;
$class = 'bottle';
$total_products = 0;
foreach ( $woocommerce->cart->get_cart() as $cart_item_key => $values ) {
$product = get_product( $values['product_id'] );
if ( $product->get_shipping_class() == $class ) {
$total_products += $values['quantity'];
}
}
if ( ( $total_products % $multiples ) > 0 )
$woocommerce->add_error( sprintf( __('Вам необходимо купить бутылок в количестве %s', 'woocommerce'), $multiples ) );
}
?>
 
Сверху Снизу