Woocommerce; поле биллинга / доставки почтового индекса в раскрывающееся меню в зависимости от города - PullRequest
0 голосов
/ 28 мая 2020

Я не кодировщик, я знаю только то, что нашел в Google.

Перу требуется 3 уровня информации о выставлении счетов / доставке: Departamento (ГОСУДАРСТВО), Pronvincia (CITY) и Distrito (можно использовать ПОЧТОВЫЙ КОД в качестве базы?).

Здесь мы не используем почтовый индекс. Вместо этого мы используем названия DISTRICT, у которых есть почтовый индекс, сопоставленный с каждым районом, но знать их нечасто. В основном мы используем названия районов: http://www.geodir.co/recursos/codigo-postal-mtc-peru.html

  1. Сначала я определил свои СОСТОЯНИЯ в файле функций моей дочерней темы:
    add_filter( 'woocommerce_states', 'custom_woocommerce_states' );

    function custom_woocommerce_states( $states ) {

      $states['PE'] = array(
        'LIM' => 'Lima',
        'CAL' => 'El Callao',
        'AMA' => 'Amazonas', 
        'ANC' => 'Ancash',
        'APU' => 'Apurimac',
        'ARE' => 'Arequipa',
        'AYA' => 'Ayacucho',
        'CAJ' => 'Cajamarca',
        'CUS' => 'Cusco',
        'HUV' => 'Huancavelica',
        'HUC' => 'Huánuco',
        'ICA' => 'Ica',
        'JUN' => 'Junín',
        'LAL' => 'La Libertad',
        'LAM' => 'Lambayeque',
        'LOR' => 'Loreto',
        'MDD' => 'Madre de Dios',
        'MOQ' => 'Moquegua',
        'PAS' => 'Pasco',
        'PIU' => 'Piura',
        'PUN' => 'Puno',
        'SAM' => 'San Martín',
        'TAC' => 'Tacna',
        'TUM' => 'Tumbes',
        'UCA' => 'Ucayali',
      );

      return $states;
    }
Я установил следующий плагин (https://es.wordpress.org/plugins/ry-wc-city-select/) и создал следующий код, чтобы сделать мои ГОРОДА в виде раскрывающегося списка, который зависит от СОСТОЯНИЯ:
    add_filter( 'ry_wc_city_select_cities', 'my_cities' );

    function my_cities( $cities ) {
        $cities['PE'] = array(
            'LIM' => array(
                'Lima',
                'Barranca',
                'Cajatambo',
                'Canta',
                'Cañete',
                'Huaral',
                'Huarochiri',
                'Huaura',
                'Oyón',
                'Yauyos'
            ),
            'CAL' => array(
                'Callao',
            ),
            'AMA' => array(
                'Bagua',
                'Bongara',
                'Chachapoyas',
                'Condorcanqui',
                'Luya',
                'Rodriguez de Mendoza',
                'Utcubamba'
            ),
            'ANC' => array(
                'Aija',
                'Antonio Raymondi',
                'Asunción',
                'Bolognesi',
                'Carhuaz',
                'Carlos Fermín Fitzcarrald',
                'Casma',
                'Corongo',
                'Huaraz',
                'Huari',
                'Huarmey',
                'Huaylas',
                'Mariscal Luzuriaga',
                'Ocros',
                'Pallasca',
                'Pomabamba',
                'Recuay',
                'Santa',
                'Sihuas',
                'Yungay'
            ),
            'APU' => array(
                'Abancay',
                'Andahuaylas',
                'Antabamba',
                'Aymaraes',
                'Chincheros',
                'Cotabambas',
                'Grau'
            ),
            'ARE' => array(
                'Arequipa',
                'Camana',
                'Caraveli',
                'Castilla',
                'Caylloma',
                'Condesuyos',
                'Islay',
                'La Unión'
            ),
            'AYA' => array(
                'Cangallo',
                'Huamanga',
                'Huanta',
                'Hunca Sancos',
                'La Mar',
                'Lucanas',
                'Parinacochas',
                'Paucar del Sara Sara',
                'Sucre',
                'Víctor Fajardo',
                'Vilcas Huamán'
            ),
            'CAJ' => array(
                'Cajabamba',
                'Cajamarca',
                'Celendín',
                'Chota',
                'Contumaza',
                'Cutervo',
                'Hualgayoc',
                'Jaen',
                'San Ignacio',
                'San Marcos',
                'San Miguel',
                'San Pablo',
                'Santa Cruz'
            ),
            'CUS' => array(
                'Acomayo',
                'Anta',
                'Calca',
                'Canas',
                'Canchis',
                'Chumbivilcas',
                'Cusco',
                'Espinar',
                'La Convención',
                'Paruro',
                'Paucartambo',
                'Quispicanchi',
                'Urubamba'
            ),
            'HUV' => array(
                'Acobamba',
                'Angaraes',
                'Castrovirreyna',
                'Churcampa',
                'Huancavelica',
                'Huaytara',
                'Tayacaja'
            ),          
            'HUC' => array( 
                'Ambo',
                'Dos de Mayo',
                'Huacaybamba',
                'Huamalies',
                'Huanuco',
                'Lauricocha',
                'Leoncio Prado',
                'Marañon',
                'Pachitea',
                'Puerto Inca',
                'Yarowilca'
            ),          
             'ICA' => array(    
                'Chincha',
                'Ica',
                'Nazca',
                'Palpa',
                'Pisco'
            ),          
             'JUN' => array(    
                'Chanchamayo',
                'Chupaca',
                'Concepción',
                'Huancayo',
                'Jauja',
                'Junín',
                'Satipo',
                'Tarma',
                'Yauli'
            ),          
             'LAL' => array(    
                'Ascope',
                'Bolivar',
                'Chepen',
                'Gran Chimu',
                'Julcan',
                'Otuzco',
                'Pacasmayo',
                'Pataz',
                'Sanchez Carrión',
                'Santiago de Chucho',
                'Trujillo',
                'Viru'
            ),          
             'LAM' => array(    
                'Chiclayo',
                'Ferreñafe',
                'Lambayeque'
            ),          
             'LOR' => array(    
                'Alto Amazonas',
                'Datem del Marañón',
                'Loreto',
                'Mariscal Ramón Castilla',
                'Maynas',
                'Requena',
                'Ucayali'
            ),          
             'MDD' => array(    
                'Manu',
                'Tahuamanu',
                'Tambopata'
            ),          
             'MOQ' => array(    
                'General Sanchez Cerro',
                'Ilo',
                'Mariscal Nieto'
            ),          
             'PAS' => array(    
                'Daniel Alcides Carrión',
                'Oxapampa',
                'Pasco'
            ),          
             'PIU' => array(    
                'Ayabaca',
                'Huancabamba',
                'Morropon',
                'Paita',
                'Piura',
                'Sechura',
                'Sullana',
                'Talara'
            ),          
             'PUN' => array(    
                'Azangaro',
                'Carabaya',
                'Chucuito',
                'El Collao',
                'Huancane',
                'Lampa',
                'Melgar',
                'Moho',
                'Puno',
                'San Antonio de Putina',
                'San Román',
                'Sandia',
                'Yunguyo'
            ),          
             'SAM' => array(    
                'Bellavista',
                'El Dorado',
                'Huallaga',
                'Lamas',
                'Mariscal Cáceres',
                'Moyobamba',
                'PIcota',
                'Rioja',
                'San Martín',
                'Tocache'
            ),          
             'TAC' => array(    
                'Candarave',
                'Jorge Basadre',
                'Tacna',
                'Tarata'
            ),          
             'TUM' => array(    
                'Contralmirante Villar',
                'Tumbes',
                'Zarumilla'
            ),          
             'UCA' => array(    
                'Atalaya',
                'Coronel Portillo',
                'Padre Abad',
                'Purus'
            )
        );
        return $cities;
    }
Я бы хотел сделать РАЙОНЫ зависимыми от ГОРОДА. Итак, моя идея состояла в том, чтобы использовать поле POST CODE как DISTRICT и создать раскрывающийся список, зависящий от CITIES, но нашел только следующий код, который делает stati c POST CODES как DISTRICTS:
add_filter( 'woocommerce_default_address_fields' , 'customize_postcode_fields' );
    function customize_postcode_fields( $adresses_fields ) {

        $adresses_fields['postcode']['type'] = 'select';
        $adresses_fields['postcode']['options'] = array(
            ''         => __('Select your postcode', 'woocommerce'),
            '15023' => 'Ancón',
            '15479' => 'Ate',
            '15049' => 'Barranco'
        );

        return $adresses_fields;
    }
Определенные здесь ПОЧТОВЫЕ КОДЫ также определены в ЗОНАХ ДОСТАВКИ, поэтому я могу назначить стоимость доставки для каждого отдельного ПОЧТОВОГО КОДА (РАЙОН в моем случае):

См. Зону доставки настройка

Посмотреть результат оформления заказа

Можно ли сделать почтовый индекс зависимым от городов?

Есть ли лучший способ заставить это случиться?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...