WooCommerce - отключить поля адреса при оформлении заказа - PullRequest
0 голосов
/ 10 января 2019

Я использую следующую функцию, чтобы скрыть поля адреса в кассе для продуктов виртуального типа.

Я добавил эту функцию, чтобы система не оплачивала фрахт для этого типа продукта.

add_filter( 'woocommerce_checkout_fields' , 'simple_virtual_checkout', 20, 1 );
function simple_virtual_checkout( $fields ) {
    $only_virtual_products = true;

    // Loop through cart items
    foreach( WC()->cart->get_cart() as $cart_item_key => $cart_item ) {
        // Check for non-virtual products
        if ( ! $cart_item['data']->is_virtual() ) 
            $only_virtual_products = false; 
    }

    if( $only_virtual_products ) {
        // remove billing fields
        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']);
        unset($fields['billing']['billing_neighborhood']);
        unset($fields['billing']['billing_number']);
        unset($fields['billing']['billing_cellphone']);

        add_filter( 'woocommerce_cart_needs_shipping_address', '__return_false');

        // remove shipping fields 
        unset($fields['shipping']['shipping_first_name']);    
        unset($fields['shipping']['shipping_last_name']);  
        unset($fields['shipping']['shipping_company']);
        unset($fields['shipping']['shipping_address_1']);
        unset($fields['shipping']['shipping_address_2']);
        unset($fields['shipping']['shipping_city']);
        unset($fields['shipping']['shipping_postcode']);
        unset($fields['shipping']['shipping_country']);
        unset($fields['shipping']['shipping_state']);
        unset($fields['shipping']['shipping_neighborhood']);
        unset($fields['shipping']['shipping_number']);

    }
    return $fields;
}

Работает нормально, так как адрес отсутствует, расчет фрахта не производится.

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

В этом случае, есть ли способ реализовать эту функцию, чтобы она не извлекала эти данные из реестра? Адрес, город, почтовый индекс и т.д ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...