Оставьте поле состояния как раскрывающийся список, когда одна страна разрешена в Woocommerce. - PullRequest
0 голосов
/ 01 февраля 2019

Я думал, что это будет легко, но я не получаю желаемых результатов.В основном у меня есть 2 страны в WooCommerce CA и США.Я пытаюсь удалить один условно, и я могу сделать это с помощью следующего кода ниже.Однако, когда я перехожу из 2 стран в 1, выпадающее меню по-прежнему появляется.Странная вещь, которую я также заметил в приведенном ниже коде, заключается в том, что если я захожу в настройки Woocommerce, то страна, которая удаляется с помощью этого кода, также удаляется из опций «Продажа в определенные страны» .... нетуверен, что происходит.Заранее спасибо.

add_filter( 'woocommerce_countries', 'custom_woocommerce_countries_limit');
function custom_woocommerce_countries_limit( $countries ) {     
        /*
        will place a conditional here if x then remove country
        */
        unset($countries['CA']);
        $countries = array(
            'US'  => __( 'United States', 'woocommerce' )
         ); 
    return $countries;
}

РЕДАКТИРОВАТЬ: Использование этого крючка может быть близко к ответу, но когда я использую этот, состояния не превращаются в раскрывающийся список ...?

add_filter( 'woocommerce_countries_allowed_countries', 'custom_woocommerce_countries_limit');

1 Ответ

0 голосов
/ 01 февраля 2019

Вы можете использовать woocommerce_countries_allowed_countries фильтр-ловушку, но вам понадобится дополнительный код, чтобы заставить поля состояния быть раскрывающимся списком состояний (выбрать поле) :

add_filter( 'woocommerce_countries_allowed_countries', 'filter_allowed_countries_conditionally');
function filter_allowed_countries_conditionally( $countries ) {
    // will place a conditional here if x then remove country
    if( true ) {
        $countries = array( 'US'  => __( 'United States', 'woocommerce' ) );
    } else {
        $countries = array( 'CA'  => __( 'Canada', 'woocommerce' ) );
    }
    return $countries;
}

// Force billing state field type to be a dropdown
add_filter( 'woocommerce_billing_fields', 'filter_billing_state_fields', 100, 1 );
function filter_billing_state_fields( $fields ) {
    $fields['billing_state']['type'] = 'state';
    return $fields;
}

// Force shipping state field type to be a dropdown 
add_filter( 'woocommerce_shipping_fields', 'filter_shipping_state_fields', 100, 1 );
function filter_shipping_state_fields( $fields ) {
    $fields['shipping_state']['type'] = 'state';
    return $fields;
}

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

...