В принципе заголовок говорит сам за себя и дополнительное описание не требуется – мы будем использовать хук woocommerce_checkout_fields
для отключения полей, но только добавим туда дополнительное условие.
Вообще про отключение полей на странице оформления заказа уже есть отдельный урок, можете почитать его здесь.
Про саму страницу оформления заказа вообще есть видеоурок, вот ссылка, рекомендую.
А теперь код, который вы можете вставить либо в functions.php
вашей текущей темы, либо в отдельный плагин.
add_filter( 'woocommerce_checkout_fields' , 'truemisha_checkout_for_virtual_products', 25 ); function truemisha_checkout_for_virtual_products( $fields ) { $is_only_virtual = true; foreach( WC()->cart->get_cart() as $cart_item_key => $cart_item ) { // если хотя бы один товар не виртуальный, то ничего делать не будем if ( ! $cart_item['data']->is_virtual() ) { $is_only_virtual = false; break; } } if( $is_only_virtual ) { // отключаем поле Компания unset( $fields[ 'billing' ][ 'billing_company' ] ); // отключаем поле Адрес 1 unset( $fields[ 'billing' ][ 'billing_address_1' ] ); // отключаем поле Адрес 2 unset( $fields[ 'billing' ][ 'billing_address_2' ] ); // отключаем поле Населённый пункт unset( $fields[ 'billing' ][ 'billing_city' ] ); // отключаем поле Почтовый индекс unset( $fields[ 'billing' ][ 'billing_postcode' ] ); // отключаем поле Страна/регион unset( $fields[ 'billing' ][ 'billing_country' ] ); // отключаем поле Область/район unset( $fields[ 'billing' ][ 'billing_state' ] ); // отключаем поле Телефон unset( $fields[ 'billing' ][ 'billing_phone' ] ); } return $fields; }
print_r()
, если работаете на тестовом сервере.is_virtual()
, вы вполне можете написать и другие условия для вашей задачи.
Чтобы оставить комментарий, пожалуйста, зарегистрируйтесь или войдите.