Голову ломаю уже не один день, не могу найти решение чтоб от способа доставки ставилась минимальная сумма заказа.
Плагинов готовых не нашел.
Доставка у меня на странице checkout
// Функция для вывода минимальной суммы заказа на странице checkout
function display_min_order_amount_notice() {
// Получите текущий метод доставки
$chosen_shipping_method = WC()->session->get( 'chosen_shipping_methods' );
$chosen_shipping_method = $chosen_shipping_method[0];
// Получите минимальную сумму заказа для выбранного метода доставки
$min_order_amount = get_min_order_amount_for_shipping_method( $chosen_shipping_method );
if ( ! empty( $min_order_amount ) ) {
// Получите текущую сумму заказа
$order_total = WC()->cart->subtotal;
// Если сумма заказа меньше минимальной, выведите уведомление и предотвратите оформление заказа
if ( $order_total < $min_order_amount ) {
wc_add_notice( sprintf( 'Минимальная сумма заказа для выбранного метода доставки: %s', wc_price( $min_order_amount ) ), 'error' );
remove_action( 'woocommerce_checkout_order_review', 'woocommerce_order_review', 10 );
}
}
}
add_action( 'woocommerce_before_checkout_form', 'display_min_order_amount_notice' );
// Функция для получения минимальной суммы заказа для метода доставки
function get_min_order_amount_for_shipping_method( $chosen_shipping_method ) {
// Создайте массив с минимальными суммами заказа для каждого метода доставки
$min_order_amounts = array(
'flat_rate:7' => 10000,
'flat_rate:8' => 10000,
'flat_rate:9' => 5000,
'flat_rate:10' => 1000,
);
// Проверьте, есть ли минимальная сумма заказа для выбранного метода доставки
if ( isset( $min_order_amounts[ $chosen_shipping_method ] ) ) {
return $min_order_amounts[ $chosen_shipping_method ];
}
return 0; // Если нет соответствия методу доставки, верните 0
}
Но в итоге если зайти на страницу checkout то если доставка выбрана из массива то напишет нотис, а если переключить доставку то нотис просто исчезает и всё. Ну и заказ можно оформить всё равно.