如何修改WooCommerce新订单管理员通知邮件中“Shipping”为“Handling fee”
WooCommerce 全局将"Shipping"替换为"Handling fee"实现方案
方案1:全站全场景统一替换(最适配你的需求)
你的业务完全不需要配送相关表述,直接用WooCommerce全局文本翻译钩子覆盖所有场景即可,结账页、订单详情页、邮件通知、后台订单页都会统一生效,代码如下:
add_filter( 'gettext', 'custom_rename_shipping_to_handling_fee', 10, 3 ); add_filter( 'ngettext', 'custom_rename_shipping_to_handling_fee', 10, 3 ); function custom_rename_shipping_to_handling_fee( $translated, $original, $domain ) { // 仅作用于WooCommerce相关文本 if ( $domain !== 'woocommerce' ) { return $translated; } // 匹配所有要替换的Shipping相关表述,可根据实际使用场景新增匹配项 $replace_map = [ 'Shipping' => 'Handling fee', 'Shipping:' => 'Handling fee:', 'Shipping cost' => 'Handling fee cost', 'Flat rate shipping' => 'Flat rate handling fee' ]; if ( isset( $replace_map[ $original ] ) ) { return $replace_map[ $original ]; } // 兼容大小写变体匹配 if ( isset( $replace_map[ ucfirst( strtolower( $original ) ) ] ) ) { return $replace_map[ ucfirst( strtolower( $original ) ) ]; } return $translated; }
注:该方案会覆盖所有WooCommerce输出的对应文本,你之前添加的
woocommerce_shipping_package_name钩子可以直接移除,避免重复定义。
方案2:仅修改邮件通知场景的表述(不需要全局替换可选用)
如果你只需要调整邮件里的文本,单独添加订单邮件的行项目名称钩子即可:
add_filter( 'woocommerce_order_shipping_to_display', 'custom_rename_shipping_in_emails', 10, 2 ); function custom_rename_shipping_in_emails( $shipping_html, $order ) { return str_replace( 'Shipping', 'Handling fee', $shipping_html ); }
说明
你之前使用的woocommerce_shipping_package_name钩子仅作用于结账/购物车页的配送包名称,不会覆盖订单生成后的邮件、订单详情页等场景,所以才会出现邮件里仍显示原文本的情况。
内容的提问来源于stack exchange,提问作者lena11d
相关产品推荐
相关产品推荐

