Для того чтобы убрать способы доставки у виртуального товара в WooCommerce вам потребуется внести изменения в код.
Первым шагом открыть файл functions.php вашей темы. Для этого перейдите в административную панель вашего сайта на WordPress, затем перейдите в раздел "Внешний вид" -> "Редактор темы". В открывшемся окне выберите файл functions.php для редактирования.
Добавьте следующий код в файл functions.php:
function remove_shipping_for_virtual_products( $rates, $package ) { $is_virtual = false; // Check if products in the cart are virtual foreach ( WC()->cart->get_cart() as $cart_item_key => $cart_item ) { if ( ! $cart_item['data']->needs_shipping() ) { $is_virtual = true; break; } } //If virtual products are found, remove all shipping methods if ( $is_virtual ) { foreach ( $rates as $rate_key => $rate ) { if ( 'shipping_method' === $rate->method_id ) { unset( $rates[ $rate_key ] ); } } } return $rates; } add_filter( 'woocommerce_package_rates', 'remove_shipping_for_virtual_products', 10, 2 );
Сохраните изменения.
Этот код будет проверять корзину WooCommerce на наличие виртуальных товаров. Если найдены виртуальные товары, то все способы доставки будут удалены из списка.
Теперь вам необходимо обновить страницу с корзиной, чтобы увидеть изменения. Вы увидите, что способы доставки больше не отображаются, когда в корзине имеются только виртуальные товары.
Обратите внимание, что это решение удаляет все способы доставки, если в корзине есть хотя бы один виртуальный товар. Если вам нужно оставить какие-то способы доставки, например, для определенных категорий товаров, вам придется внести некоторые изменения в код.
Не забудьте сделать резервную копию вашей темы и всего сайта перед внесением изменений в код, чтобы избежать потери данных в случае возникновения проблем.