Я использую следующую функцию, чтобы скрыть поля адреса в кассе для продуктов виртуального типа.
Я добавил эту функцию, чтобы система не оплачивала фрахт для этого типа продукта.
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;
}
Работает нормально, так как адрес отсутствует, расчет фрахта не производится.
Проблема, с которой я сталкиваюсь, - это когда пользователь входит в систему, у которого уже есть зарегистрированный адрес.
В этом случае, есть ли способ реализовать эту функцию, чтобы она не извлекала эти данные из реестра? Адрес, город, почтовый индекс и т.д ...