【问题标题】:Add city name field to shipping zone - Woocommerce将城市名称字段添加到运输区域 - Woocommerce
【发布时间】:2018-09-19 14:55:21
【问题描述】:

我正在使用 Departamentos y Ciudades de Colombia para Woocommerce 插件,它将城市/城镇的输入字段转换为结帐部分中的选择字段,并在插件文件中提供预先填充的城市/城镇列表。

我想在表单中添加相同的城市选择字段,以在 Woocommerce 中创建送货区域。虽然 Woocommerce 支持添加 Continents/Countries/States/Postcodes 但不支持在运输区域中添加城市名称。我可以使用邮政编码,但这不起作用,因为某些国家/地区不支持邮政编码系统,或者它们在单个邮政编码上覆盖更大的区域。

谁能指导我需要扩展 Woocommerce 核心的哪些类或文件,以便它支持航运区的城市名称?我想根据城市名称创建运输区域。我认为WC_Shipping_Zone 的方法需要被覆盖。帮助我解决 Woocommerce 的 actionsfilters 对解决方案感兴趣。

【问题讨论】:

    标签: php wordpress woocommerce shipping


    【解决方案1】:

    我是插件的创建者,代码参考github https://github.com/saulmoralespa/departamentos-y-ciudades-de-colombia-para-woocommerce/blob/master/includes/filter-by-cities.php

    我添加了按城市过滤器如何运送可选

    【讨论】:

    • 您好,谢谢,我可以看到该部分,但看不到如何设置规则,因为有可用的选项吗?
    • 没关系,我刚刚找到了窍门,虽然我没有注意到这是您在创建运输区域时必须选择的运输方式,但城市过滤器令人困惑。
    【解决方案2】:

    试试这个代码:

    add_filter( 'wc_city_select_cities', 'my_cities' );
    /**
     * Replace XX with the country code. Instead of YYY, ZZZ use actual  state codes.
     */
    
    function my_cities( $cities ) {
        $cities['XX'] = array(
            'YYY' => array(
                'City1',
                'City2'
            ),
            'YYY' => array(
                'City Center',
                'City Corniche'
            )
        );
        return $cities;
    }
    

    【讨论】:

    • 欢迎来到stackoverflow。请解释此代码如何以及为何起作用。 https:stackoverflow.com/help/how-to-answer
    【解决方案3】:

    我有同样的问题,但是我发现我可以插入一个 php 文件来解决这个问题。

    1. 转到:yourwebsite/wp-content/plugins/woocommerce/i18n/states
    2. 您将看到插入了州的国家/地区的 php 文件
    3. 如果你打开一个你会看到代码格式

    下面是阿根廷的php代码

    <?php
    /**
     * Argentinian provinces
     *
     * @package WooCommerce/i18n
     * @version 2.4.0
     */
    
    global $states;
    
    defined( 'ABSPATH' ) || exit;
    
    $states['AR'] = array(
    	'C' => __( 'Ciudad Aut&oacute;noma de Buenos Aires', 'woocommerce' ),
    	'B' => __( 'Buenos Aires', 'woocommerce' ),
    	'K' => __( 'Catamarca', 'woocommerce' ),
    	'H' => __( 'Chaco', 'woocommerce' ),
    	'U' => __( 'Chubut', 'woocommerce' ),
    	'X' => __( 'C&oacute;rdoba', 'woocommerce' ),
    	'W' => __( 'Corrientes', 'woocommerce' ),
    	'E' => __( 'Entre R&iacute;os', 'woocommerce' ),
    	'P' => __( 'Formosa', 'woocommerce' ),
    	'Y' => __( 'Jujuy', 'woocommerce' ),
    	'L' => __( 'La Pampa', 'woocommerce' ),
    	'F' => __( 'La Rioja', 'woocommerce' ),
    	'M' => __( 'Mendoza', 'woocommerce' ),
    	'N' => __( 'Misiones', 'woocommerce' ),
    	'Q' => __( 'Neuqu&eacute;n', 'woocommerce' ),
    	'R' => __( 'R&iacute;o Negro', 'woocommerce' ),
    	'A' => __( 'Salta', 'woocommerce' ),
    	'J' => __( 'San Juan', 'woocommerce' ),
    	'D' => __( 'San Luis', 'woocommerce' ),
    	'Z' => __( 'Santa Cruz', 'woocommerce' ),
    	'S' => __( 'Santa Fe', 'woocommerce' ),
    	'G' => __( 'Santiago del Estero', 'woocommerce' ),
    	'V' => __( 'Tierra del Fuego', 'woocommerce' ),
    	'T' => __( 'Tucum&aacute;n', 'woocommerce' ),
    );

    我将该代码格式复制到一个新文件中,并用我所在国家/地区的信息替换了州,我能够为我所在国家/地区的每个州创建运输区。

    这是我的 php 代码

    <?php
    /**
     * Belizean Districts
     *
     * @package WooCommerce/i18n
     * @version 2.4.0
     */
    
    global $states;
    
    defined( 'ABSPATH' ) || exit;
    
    $states['BZ'] = array(
    	'C' => __( 'Corozal', 'woocommerce' ),
    	'B' => __( 'Orange Walk', 'woocommerce' ),
    	'K' => __( 'Belize', 'woocommerce' ),
    	'H' => __( 'Cayo', 'woocommerce' ),
    	'U' => __( 'Stann Creek', 'woocommerce' ),
    	'X' => __( 'Toledo', 'woocommerce' ),
    	'W' => __( 'Caye Caulker', 'woocommerce' ),
    	'E' => __( 'San Pedro', 'woocommerce' ),
    	
    );

    【讨论】:

    • 嗯,我有兴趣按城市而不是州创建航运区。 WooCommerce 默认支持状态。
    猜你喜欢
    • 2014-12-27
    • 2016-03-15
    • 2019-03-19
    • 2016-10-09
    • 2023-01-09
    • 1970-01-01
    • 1970-01-01
    • 2021-01-04
    • 1970-01-01
    相关资源
    最近更新 更多