WooCommerce购物车与结账页Shipping文本修改及钩子使用咨询
问题解答
你提供的两段代码均无法生效,选择的钩子也不适用于你的需求。
错误原因
- 你提到的
woocommerce_review_order、woocommerce_review_order_after_order_total均为动作(action)钩子,仅用于向指定位置插入输出内容,无法修改已有文本,也不能通过add_filter挂载。 - 两段代码中使用的
woocommerce_checkout_review_order钩子不存在,挂载后不会触发执行。 - 第一段代码的回调函数直接返回字符串,不符合过滤钩子的传参逻辑;第二段代码试图修改不存在的
$fields['Expedition']数组项,逻辑错误。
正确实现方案
推荐使用WordPress原生文本过滤钩子实现,兼容性最强,不需要适配主题自定义结构:
add_filter( 'gettext', 'custom_shipping_label_modify', 20, 3 ); function custom_shipping_label_modify( $translated_text, $original_text, $text_domain ) { // 仅修改WooCommerce输出的文本,避免全局误替换 if ( $text_domain !== 'woocommerce' ) { return $translated_text; } // 匹配你当前页面显示的配送标签文本,可根据实际情况替换为'Shipping' if ( trim( $translated_text ) === 'Expédition' ) { return 'Expedition, après 25% de prise en charge'; } return $translated_text; }
如果需要仅在结算页生效,可在函数中增加页面判断:
add_filter( 'gettext', 'custom_shipping_label_modify', 20, 3 ); function custom_shipping_label_modify( $translated_text, $original_text, $text_domain ) { // 仅在结算页、且为WooCommerce文本时生效 if ( !is_checkout() || $text_domain !== 'woocommerce' ) { return $translated_text; } if ( trim( $translated_text ) === 'Expédition' ) { return 'Expedition, après 25% de prise en charge'; } return $translated_text; }
将上述代码添加到你当前Babystreet主题的functions.php文件末尾,或者使用代码片段插件插入即可生效。
原有钩子适用场景说明
如果你后续需要在订单汇总区域插入自定义内容,可使用对应动作钩子:
woocommerce_review_order:在整个订单汇总区块最前面插入内容woocommerce_review_order_after_order_total:在订单总金额行之后插入内容
内容的提问来源于stack exchange,提问作者Abla-vêtement-enfant.fr
相关产品推荐
相关产品推荐

