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

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

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

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

woocommerce_multiple_quantities_checkout[2]

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

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

<?php
// проверяем корзину на наличие в ней 6 товаров
add_action( 'woocommerce_check_cart_items', 'woocommerce_check_cart_quantities' );
function woocommerce_check_cart_quantities() {
global $woocommerce;
$multiples = 6;
$total_products = 0;
foreach ( $woocommerce->cart->get_cart() as $cart_item_key => $values ) {
$total_products += $values['quantity'];
}
if ( ( $total_products % $multiples ) > 0 )
$woocommerce->add_error( sprintf( __('Вам необходимо купить %s единиц товара', 'woocommerce'), $multiples ) );
}
 
// Ограничиваем товары в корзине определенным классом доставки для покупки "целым ящиком"
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 ) );
}
?>

По всем вопросам и отзывам просьба писать в комментарии ниже.

Не забывайте, по возможности, оценивать понравившиеся записи количеством звездочек на ваше усмотрение.

VN:F [1.9.22_1171]
Rating: 5.0/5 (1 vote cast)

Об авторе ADv

Занимаюсь разработкой сайтов и магазинов на WordPress. Оказываю платные помощь и консультации. Skype: advokat_b
Scroll To Top