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

如何在多语言WordPress站点统一销售徽章文本为Sale?

解决WPML多语言站点统一WooCommerce销售徽章为“Sale”的问题

你的代码未生效大概率是因为WPML或主题的代码优先级更高,覆盖了你的自定义输出。可以通过以下两种方法解决:

方法一:提高钩子优先级

将钩子的优先级设为更高的值(比如999),确保你的代码在WPML及其他修改该钩子的代码之后执行:

add_filter('woocommerce_sale_flash', 'ds_force_global_sale_text', 999);

function ds_force_global_sale_text() {
    return '<span class="onsale">Sale</span>';
}

方法二:拦截WPML的翻译请求

如果方法一仍无效,直接阻止WPML对销售文本的翻译操作:

add_filter('woocommerce_sale_flash', 'ds_force_global_sale_text', 999);
add_filter('wpml_translate_single_string', 'ds_prevent_sale_text_translation', 10, 4);

function ds_force_global_sale_text() {
    return '<span class="onsale">Sale</span>';
}

function ds_prevent_sale_text_translation($translation, $text, $domain, $lang) {
    if ($domain === 'woocommerce' && $text === 'Sale') {
        return 'Sale';
    }
    return $translation;
}

注意事项

  • 将代码添加到当前主题的functions.php文件,或使用代码片段插件(如Code Snippets)保存,避免主题更新导致代码丢失。
  • 若使用自定义主题,需确认主题是否也修改了woocommerce_sale_flash钩子,必要时进一步提高优先级数值。
  • 修改后清除网站缓存及WPML的翻译缓存,确保新代码生效。

内容的提问来源于stack exchange,提问作者Glendi Xhela

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 06:14:59