You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何为WooCommerce购物车、结账页的配送方式标签添加自定义HTML?

WooCommerce配送标签添加HTML预计送达时间解决方案

问题原因

WooCommerce在前端渲染配送方式标签时,默认会对woocommerce_package_rates中设置的label属性执行esc_html()转义处理,所有HTML标签都会被转义为纯文本,因此直接在label中拼接HTML不会生效。

可行解决方案

建议通过woocommerce_cart_shipping_method_full_label过滤器处理最终输出的标签,该过滤器的输出不会被自动转义,可以正常解析HTML内容,完整实现逻辑如下:

// 第一步:将预计送达时间存入配送方式的元数据
add_filter( 'woocommerce_package_rates','add_estimated_arrival_meta', 50, 2 );
function add_estimated_arrival_meta($rates, $package){
    $groundStuff = $timeReturnedFromAPI; // 这里保留你原有的UPS API获取时间逻辑
    $ground_rate_id = 'ups:6:09'; // UPS ground rate ID
    
    foreach ( $rates as $rate_key => $rate ) {
        if( $ground_rate_id === $rate_key ) {
            // 不直接修改label,把时间存入元数据
            $rates[$rate_key]->add_meta_data( 'estimated_arrival', $groundStuff );
            break;
        }
    }
    return $rates;
}

// 第二步:在标签渲染时输出带HTML的预计送达时间
add_filter( 'woocommerce_cart_shipping_method_full_label', 'add_estimated_arrival_html', 10, 2 );
function add_estimated_arrival_html( $label, $method ) {
    $arrival_time = $method->get_meta( 'estimated_arrival' );
    if ( $arrival_time ) {
        // 这里可以自定义HTML结构和样式
        $label .= ' <span class="estimated-arrival-time" style="font-size: 12px; font-weight: normal;">(' . esc_html( $arrival_time ) . ')</span>';
    }
    return $label;
}

注意事项

  • 测试时需要清空WooCommerce配送缓存:可以通过清空购物车、或者在WooCommerce设置 > 配送 > 配送选项中点击清空缓存,避免旧的费率缓存影响效果
  • 建议把行内样式替换为自定义class统一管理:你可以在主题自定义CSS中添加如下样式,后续调整无需修改PHP代码
.estimated-arrival-time {
    font-size: 12px;
    font-weight: normal;
    margin-left: 6px;
}

内容的提问来源于stack exchange,提问作者Seb G

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 16:57:07