Минимальный и максимальный заказ WooCommerce без плагина

Минимальный и максимальный заказ WooCommerce без плагина

Продолжаем серию статей, касающихся работы Wordpress и Woocommerce.

Сегодня речь пойдет о настройке минимальной суммы заказа, которую устанавливает практически каждый владелец интернет-магазина. Всегда есть минимальное значение для заказа, ниже которого владельцу невыгодно продавать товары или услуги. В этом случае настройка минимальной суммы просто необходима и является настоящим спасением.

Есть множество плагинов, решающих данную задачу, их легко можно найти на просторах интернета. В нашем случае мы добавим собственный код в файл functions.php активной темы Wordepress. Повесим пользовательскую функцию ‘neoagency_minimum_order’, на два хука:

add_action( 'woocommerce_checkout_process', 'neoagency_minimum_order' );
add_action( 'woocommerce_before_cart' , 'neoagency_minimum_order' );
function neoagency_minimum_order() {
$minimum = 500;
if ( WC()->cart->total < $minimum ) {
if( is_cart() ) {
wc_print_notice(
sprintf( 'Минимальный заказ от %s . Ваш текущий заказ %s.' ,
wc_price( $minimum ),
wc_price( WC()->cart->total )
), 'error'
);
} else {
wc_add_notice(
sprintf( 'Минимальный заказ от %s . Ваш текущий заказ %s.' ,
wc_price( $minimum ),
wc_price( WC()->cart->total )
), 'error'
);
} } }

Для того чтобы поправить данный код под себя, поменяйте значение переменной $minimum = 500;. Здесь должно находиться минимальное значение вашего заказа.

Вместо фразы «Минимальный заказ от» вы можете добавить свое предложение, которое показывается в момент, когда сумма заказа меньше указанной.

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

Для ограничения максимального значения заказа код будет выглядеть следующим образом:

add_action( 'woocommerce_checkout_process', 'neoagency_maximum_order' );
add_action( 'woocommerce_before_cart' , 'neoagency_maximum_order' );
function neoagency_maximum_order() {
$maximum = 2500;
if ( WC()->cart->total > $maximum ) {
if( is_cart() ) {
wc_print_notice(
sprintf( 'Максимальный заказ до %s . Ваш текущий заказ %s.' ,
wc_price( $maximum ),
wc_price( WC()->cart->total )
), 'error'
);
} else {
wc_add_notice(
sprintf( 'Максимальный заказ от %s . Ваш текущий заказ %s.' ,
wc_price( $maximum ),
wc_price( WC()->cart->total )
), 'error'
);
}}}

Меняем значение переменной $maximum = 2500; на свое и наслаждаемся результатом.

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

 30.03.2019