• Никакой политики на форуме. Иначе - бан!
  • Вопрос без рабочей ссылки на проблему считается риторическим. Без ссылки и скриншота - провокацией!
  • Темы озаглавленные с маленькой буквы или капсом удаляются без предупреждения!

Скрыть способ оплаты

mmalkolm

Новичок
Здравствуйте. Мне нужно скрыть один способ оплаты для определенной категории товаров. Понимаю, что это можно реализовать, добавив фильтр, но знаний не хватает. Может кто-то подскажет как сформировать условие?
 

shopitpro

Новичок
Я бы предложил поиграть с доставками, назначая под каталог а потом скрывая.
Схема такова .
Если нам надо скрыть какой-то способ оплаты при Самовывозе например оплата через 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 в начале и в конце кода
 

EnemY

Новичок
shopitpro, спасибо за код ! Я наконец то сделал идеальный раздел оформления заказа !
 
Сверху Снизу