Woocommerce;邮政编码帐单/运输字段到下拉列表取决于城市

时间:2020-05-28 17:56:44

标签: woocommerce

我不是编码员,我只知道自己在Google中找到的信息。

秘鲁需要3层计费/运输信息:Departamento(州),Pronvincia(城市)和Distrito(也许使用POST CODE作为基础?)。

在这里,我们不使用邮政编码。在替换中,我们使用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;
    }
  1. 我安装了以下插件(https://es.wordpress.org/plugins/ry-wc-city-select/),并创建了以下代码,将我的CITIES设置为下拉列表,该列表取决于STATE:
    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;
    }
  1. 我想让DISTRICTS依赖CITIES。因此,我的想法是将POST CODE字段用作DISTRICT,并创建一个依赖于CITIES的下拉列表,但仅找到以下使静态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;
    }
  1. 此处定义的POST代码也已在SHIPPING ZONES上定义,因此我可以为每个单独的POST CODE(在我的情况下为DISTRICT)分配运费:

See shipping zone setup

See checkout result

是否可以使邮政编码取决于城市?

是否有更好的方法来实现这一目标?

0 个答案:

没有答案