Як вимкнути накладений платіж від певної суми

Покрокова інструкція як приховати "наложку" Нова Пошта від певної суми в WooCommerce + UA Shipping Pro
Написано Ihor Kit
Оновлено 3 тижні тому

В інтерфейсі плагіну такої можливості немає, але ви можете так зробити з оцим кодом для functions.php вашої дочірньої теми:

/**
 * Ховає «Оплата при доставці» (накладений платіж),
 * якщо сума замовлення менша за 1000 грн.
 */
add_filter( 'woocommerce_available_payment_gateways', function ( $gateways ) {
    if ( is_admin() && ! wp_doing_ajax() ) {
        return $gateways; // не чіпаємо адмінку
    }
    if ( ! isset( $gateways['cod'] ) ) {
        return $gateways;
    }

    $min_total = 1000; // мінімальна сума, грн
    $total     = null;

    // Сторінка «Оплатити замовлення»: кошика там немає, беремо суму замовлення
    if ( is_wc_endpoint_url( 'order-pay' ) ) {
        $order_id = absint( get_query_var( 'order-pay' ) );
        $order    = $order_id ? wc_get_order( $order_id ) : null;
        if ( $order ) {
            $total = (float) $order->get_subtotal();
        }
    } elseif ( WC()->cart ) {
        $total = (float) WC()->cart->get_subtotal(); // сума товарів без доставки
    }

    if ( null !== $total && $total < $min_total ) {
        unset( $gateways['cod'] );
    }

    return $gateways;
} );

Куди вставити код

Файл functions.php дочірньої теми

  1. Переконайтеся, що активна дочірня тема (наприклад, Flatsome Child). У батьківській темі код зникне після оновлення.
  2. Зробіть резервну копію файлу functions.php.
  3. Вставте код у кінець файлу через FTP або файловий менеджер хостингу.

Як налаштувати під себе

Інша мінімальна сума: замініть 1000 у рядку $min_total = 1000; на потрібне число.

За замовчуванням рахується сума товарів без доставки й без знижок. Щоб рахувати інакше, замініть рядок з WC()->cart->get_subtotal():

Що рахувати

Рядок у коді

Сума товарів (за замовчуванням)

$total = (float) WC()->cart->get_subtotal();

Товари після знижки за купоном

$total = (float) WC()->cart->get_subtotal() - (float) WC()->cart->get_discount_total();

Повна сума разом із доставкою

$total = (float) WC()->cart->get_total( 'edit' );

Цей скрипт створено для роботи зі стандартним методом оплати "Готівка при отриманні" який автоматично зчитує наш плагін UA Shipping Pro (і безкоштовна версія також).

Чи була наша стаття корисною?