Удалить определенные штаты страны на Woocommerce Checkout - PullRequest
0 голосов
/ 08 декабря 2018

Я пытаюсь найти способ удалить несколько штатов США из выпадающего списка "Штат" на странице оформления заказа в WooCommerce.

Список штатов:

  1. Гавайи
  2. Аляска
  3. Вооруженные силы (АА)
  4. Вооруженные силы (AE)
  5. Вооруженные силы (AP)

Что я делал до сих пор:
Я их вручную удалял, как упоминалосьпо этой ссылке .Но это не очень хороший способ, так как изменения перезаписываются при каждом обновлении WooCommerce.

Альтернатива, которую я нашел: По этой ссылке WooCommerce ограничивает доставку в государства, основанные на категории , есть способ установить состояния доставки, если определенное условиевстретилМне интересно, могу ли я сбросить пять состояний.Для меня это звучит более логично, чем установка 50 состояний.Но, к сожалению, я не могу найти ничего полезного.

Есть идеи, что может быть возможным решением?

Ответы [ 2 ]

0 голосов
/ 08 декабря 2018

Самый простой способ - удалить их, используя специальный фильтр woocommerce_states, так:

add_filter( 'woocommerce_states', 'custom_us_states', 10, 1 );
function custom_us_states( $states ) {
    $non_allowed_us_states = array( 'AK', 'HI', 'AA', 'AE', 'AP'); 

    // Loop through your non allowed us states and remove them
    foreach( $non_allowed_us_states as $state_code ) {
        if( isset($states['US'][$state_code]) )
            unset( $states['US'][$state_code] );
    }
    return $states;
}

Код помещается в файл functions.php вашей активной дочерней темы (или активной темы).Протестировано и работает.

Затем вы можете добавить какое-либо условие или создать страницу пользовательских настроек, как показано в темах ниже:

0 голосов
/ 08 декабря 2018

Лучший способ сделать это - использовать фильтр, добавьте этот фрагмент в ваши темы functions.php

/**
 * Modify Woocommerce states array
 *
 * @param array $states, collection of all $states
 * @return array $states, modified array.
*/
add_filter( 'woocommerce_states', function( $states ){
    // Unset Hawaii
    unset( $states['US']['HI'] );

    return $states;
}, 999);

Вы можете сбросить любые состояния, подобные этому.

...