php Woocommerce从运输方式ID获取运输区域名称

ftf50wuq  于 2023-01-12  发布在  PHP
关注(0)|答案(1)|浏览(145)

我有一个返回$shipping_method_id(例如flat_rate:3)的函数。我想获取此发运方法费率ID的区域名称...
如何根据发运方法费率ID获取区域名称?

s8vozzvw

s8vozzvw1#

构建一个使用非常简单的SQL查询的自定义函数,如下所示:

function get_shipping_zone_from_method_rate_id( $method_rate_id ){
    global $wpdb;

    $data = explode( ':', $method_rate_id );
    $method_id = $data[0];
    $instance_id = $data[1];

    // The first SQL query
    $zone_id = $wpdb->get_col( "
        SELECT wszm.zone_id
        FROM {$wpdb->prefix}woocommerce_shipping_zone_methods as wszm
        WHERE wszm.instance_id = '$instance_id'
        AND wszm.method_id LIKE '$method_id'
    " );
    $zone_id = reset($zone_id); // converting to string

    // 1. Wrong Shipping method rate id
    if( empty($zone_id) )   
    {
        return __("Error! doesn't exist…");
    } 
    // 2. Default WC Zone name 
    elseif( $zone_id == 0 ) 
    {
        return __("All Other countries");
    }
    // 3. Created Zone name  
    else                       
    {
        // The 2nd SQL query
        $zone_name = $wpdb->get_col( "
            SELECT wsz.zone_name
            FROM {$wpdb->prefix}woocommerce_shipping_zones as wsz
            WHERE wsz.zone_id = '$zone_id'
        " );
        return reset($zone_name); // converting to string and returning the value
    }
}
  • 代码在您的活动子主题(或主题)的function.php文件或任何插件文件中。*

测试和工程。

    • 用法示例***(输出区域名称)*:
// Set HERE your shipping method rate id
$rate_id = 'flat_rate:3';
// Get the zone name
$zone_name = get_shipping_zone_from_method_rate_id( $rate_id );

// Output zone name
echo  $zone_name;

相关问题