Часто такое бывает, что при разработке маленького интернет-магазина на wordpress при помощи плагина woocommerce, может появиться надобность скрыть метод оплаты в зависимости от того, какой выбран метод доставки.
К сожалению, не для каждого метода оплаты есть такая настройка в админке.
Так вот, тут может помочь не большой код, который необходимо прописать в function.php вашей темы.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
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
Ничего сложного как видите 🙂
Если у вас есть вопросы, или интересные темы для статьи, оставляйте свои комментарии 🙂
Так же подписывайтесь на наш телеграм-канал, чтобы всегда быть вкурсе новых статей 😉
Оставьте ответ