在 WooCommerce 中通过其 Id 获取选择的运输方式标题

Get chosen shipping method title by its Id in WooCommerce

在 WooCommerce includes\class-express-checkout-gateway.php 文件中,我通过以下代码获取送货方式 ID:

$chosen_shipping_methods = WC()->session->get('chosen_shipping_methods');

它得到 flat_rate:1,但我需要它的标题 - Flat Rate

我已经尝试了所有这些 answers 以及更多。

我怎样才能得到这个?

$rate_table = array();

$shipping_methods = WC()->shipping->get_shipping_methods();

foreach($shipping_methods as $shipping_method){
    $shipping_method->init();

    foreach($shipping_method->rates as $key=>$val)
        $rate_table[$key] = $val->label;
}

echo $rate_table[WC()->session->get( 'chosen_shipping_methods' )[0]]; 

这样试试

如果客户在前端计算了运费,这应该可以:

function get_shipping_name_by_id( $shipping_id ) {
    $packages = WC()->shipping->get_packages();

    foreach ( $packages as $i => $package ) {
        if ( isset( $package['rates'] ) && isset( $package['rates'][ $shipping_id ] ) ) {
            $rate = $package['rates'][ $shipping_id ];
            /* @var $rate WC_Shipping_Rate */
            return $rate->get_label();
        }
    }

    return '';
}

如果找不到给定运输 ID 的名称,这将 return 一个空字符串。