Давайте представим, что вы держите магазин на WooCommerce, где вы продаете товары, которые поставляются в коробках, и хотите, чтобы покупатели самостоятельно формировали свои собственные «коробки» с различными товарами, в то время как WooCommerce по-умолчанию разрешает продавать вам товары в том количестве, которое вы установили для этого товара (например, 1шт), и покупатель может выбрать любое количество товара в свою корзину.
Например, если у вас онлайн магазин с вином на WooCommerce и вы хотели бы продавать свое вино по одной бутылке, но только при условии, что покупатель совершит покупку такого количества бутылок, которые бы сформировали целую коробку, тогда эта статья для вас.
С помощью кода ниже вы можете указать для ваших товаров что каждый товар является одной бутылкой вина, а затем заставить покупателя добавить различные 6 товаров в корзину прежде чем ему станет доступна оплата. Если же покупатель, к примеру, добавит только 5 бутылок в корзину и затем попытается оплатить, ему отобразится уведомление о том, что необходимо купить 6 бутылок.
Можно даже реализовать это правило для товаров с определенным классом доставки, что позволит вам продавать бутылки поштучно, и в то же время по 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 ) ); } ?>
По всем вопросам и отзывам просьба писать в комментарии ниже.
Не забывайте, по возможности, оценивать понравившиеся записи количеством звездочек на ваше усмотрение.