Скрыть адрес, если уже заполнен WooCommerce

Я ищу способ скрыть платежный адрес на странице оформления заказа моей темы woocommerce, если пользователь уже заполнил платежную форму (из предыдущего заказа или если пользователь сделал это ранее со страницы «мой аккаунт») ).

Я нашел способы полностью скрыть форму оплаты / доставки на странице оформления заказа, если пользователь вошел в систему (см. Ниже), однако я не могу найти способ сделать это выше.

add_filter( 'woocommerce_checkout_fields' , 'custom_override_checkout_fields' );
function custom_override_checkout_fields( $fields ) {
if( is_user_logged_in() ){
unset($fields['billing']);
$fields['billing'] = array();
}
return $fields;
}

Любая идея?

Спасибо!

0

Решение

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

add_filter( 'woocommerce_checkout_fields' , 'custom_override_checkout_fields' );
function custom_override_checkout_fields( $fields ) {
if( is_user_logged_in() && !has_billing()){
unset($fields['billing']);
$fields['billing'] = array();
}
return $fields;
}

// Check the meta of Postcode and Country if they are entered.
function has_billing($user_id = false){
if(!$user_id)
$user_id = get_current_user_id();

$shipping_postcode = get_user_meta( $user_id, 'billing_postcode', true );
$shipping_country = get_user_meta( $user_id, 'billing_country', true );

// Fetch more meta for the condition has needed.
if($shipping_postcode && $shipping_country){
return true;
}

return false;
}

Примечание: префикс Перевозка_ есть один для выставления счетов ( billing_ ).

Изменить: здесь мета-ключ Платежный адрес 1 а также billing_address_2 всегда префикс может быть либо billing_ или же Перевозка_

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

Woocommerce WC_Order get_shipping_address () не возвращается как массив (старый пост может быть недействительным)

3

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector