Ограничить состояние доставки заказа в Woocommerce - PullRequest
1 голос
/ 27 мая 2019

При отправке в США я пытаюсь ограничить адрес доставки одним штатом (Кентукки), приведенный ниже код работает на WooCommerce 3.5.8, но как только обновление WooCommerce перестает работать.Я пробовал разные приращения (3.6.0 бета, rc1 и т. Д.), И все, что после 3.5.8 заставляет его перестать работать (он показывает все состояния, а не только Кентукки).

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

 add_filter( 'woocommerce_checkout_fields' , 'custom_override_checkout_fields' );

function custom_override_checkout_fields( $fields ) 
{
    $fields['shipping']['shipping_state']['options'] = array('KY' => 'Kentucky' );

    return $fields;
}

Есть ли проблема с вышеуказанным или какие-то изменения, которые мне нужно внести?

1 Ответ

1 голос
/ 27 мая 2019

Ниже будут заданы предварительно определенные по умолчанию страна и состояние доставки, отображая поле выбора состояния доставки как отключенное (только для чтения) с выбранным значением "Кентукки":

add_filter( 'woocommerce_shipping_fields' , 'custom_shipping_state_fields', 100, 1 );
function custom_shipping_state_fields( $fields ) {
    WC()->customer->set_shipping_country('US'); // Set shipping country
    WC()->customer->set_shipping_state('KY'); // Set shipping state

    $fields['shipping_state']['type'] = 'select';
    $fields['shipping_state']['options'] = ['KY' => __('Kentucky', 'WooCommerce')];
    $fields['shipping_state']['default'] = 'KY';
    $fields['shipping_state']['input_class'] = [];
    $fields['shipping_state']['custom_attributes'] = ['disabled' => 'disabled'];

    return $fields;
}

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

...