Отображения полей в checkout форме для виртуальных товаров Woocommerce

Иногда бывает необходимо сократить количество полей в форме оформления заказа Woocommerce. Если вы продаете виртуальные товары, которые не требуют доставки совсем необязательно спрашивать у клиента его индекс и прочее. В этой статье мы расскажем как сделать это без помощи плагинов.

Вставьте этот код к файл functions.php. Рекомендуем использовать сhild тему, однако можно и основную.

add_filter( 'woocommerce_checkout_fields' , 'bbloomer_simplify_checkout_virtual' );
 
function bbloomer_simplify_checkout_virtual( $fields ) {
     
    $only_virtual = true;
     
    foreach( WC()->cart->get_cart() as $cart_item_key => $cart_item ) {
        // Check if there are non-virtual products
        if ( ! $cart_item['data']->is_virtual() ) $only_virtual = false; 
    }
     
    if( $only_virtual ) {
        //unset($fields['billing']['billing_company']);
        unset($fields['billing']['billing_address_1']);
        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']);
        add_filter( 'woocommerce_enable_order_notes_field', '__return_false' );
    }
     
    return $fields;
}

Как видно на примере выше для всех виртуальных товаров отключены поля. Если нужно вернуть поле поставьте в начале строки //

//unset($fields['billing']['billing_company']);

Оставьте комментарий