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