Залежність оплати від обраної доставки
Якщо нам треба приховати якийсь спосіб оплати при самовивозу наприклад оплата через PayPal то для цього нам знадобиться такий код.
Його потрібно вписати в файл functions.php вашої теми, який лежить в корені папки / wp-content / themes / названіе_вашей_теми
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 вказуємо ID шлюзу назва способу плати який модно подивитися в налаштуванні оплати
Ось всі стандартні Іди шлюзів оплати
Прямий банківський переказ bacs
Оплата чеком cheque
Накладений платіж cod
PayPal paypal
У прикладі я прибрав оплата чеком при самовивозі
Щоб повторити цю процедуру але з іншої способом доставки і оплати то просто скопіювали код та змініть назву функції alter_shipping_methods наприклад на alter_shipping_methods1 на початку і в кінці коду