Как скрыть метод оплаты в зависимости от метода доставки wordpress woocommerce

Часто такое бывает, что при разработке маленького интернет-магазина на wordpress при помощи плагина woocommerce, может появиться надобность скрыть метод оплаты в зависимости от того, какой выбран метод доставки.
К сожалению, не для каждого метода оплаты есть такая настройка в админке.
Так вот, тут может помочь не большой код, который необходимо прописать в function.php вашей темы.

function alter_shipping_methods($available_gateways)
{
    global $woocommerce;
    $chosen_titles = array();
    $available_methods = $woocommerce->shipping->get_packages();
    $chosen_rates = (isset($woocommerce->session)) ? $woocommerce->session->get('chosen_shipping_methods') : array();
    foreach ($available_methods as $method) foreach ($chosen_rates as $chosen) {
        if (isset($method['rates'][$chosen])) $chosen_titles[] = $method['rates'][$chosen]->label;
    }
    if (in_array('Самовывоз', $chosen_titles)) {
        unset($available_gateways['paypal']);
    }
    return $available_gateways;
}

add_action('woocommerce_available_payment_gateways', 'alter_shipping_methods');

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

В строке if (in_array('Самовывоз', $chosen_titles)) вы видите слово «Самовывоз» . В данном случае, получается, мы смотрим, что если выбран «Самовывоз» то будет происходить определенное действие, а именно : unset($available_gateways['paypal']) — мы уберем вывод paypal.
Вы можете «Самовывоз» заменить на то, что вам необходимо, например: доставка курьером, доставка в отделение и т.д. и т.п.
Вместо ‘paypal’ вы можете подставить ID шлюза полаты, которые необходимо убрать при нжуном выбранном методе доставки.

Стандарные ID шлюзов оплаты такие:

Прямой банковский перевод bacs
Оплата чеком cheque
Наложенный платеж cod
PayPal paypal

Ничего сложного как видите 🙂

Если у вас есть вопросы, или интересные темы для статьи, оставляйте свои комментарии 🙂
Так же подписывайтесь на наш телеграм-канал, чтобы всегда быть вкурсе новых статей 😉

Оставьте ответ

comment-avatar

*