如何阻止WooCommerce将SKU中的1/4文本转换为分数格式?
阻止WooCommerce将SKU中的
1/4转换为分数格式 我们的变体SKU是W-250-1/4(其中1/4代表提升速度),但WooCommerce会自动把这段文本转换成分数格式:

实际前端显示效果如下:

奇怪的是,其他类似结构的SKU(比如W-250-2/8和W-250-3/12)却没有出现这个问题。
目前我们只能临时在数字间加空格写成1 / 4,但这不符合我们的文档规范。有没有办法阻止WooCommerce的这种自动转换?
可行的解决方法
1. 用HTML实体替换斜杠
把SKU里的斜杠/换成HTML实体/,也就是将W-250-1/4改为W-250-1/4。这样WooCommerce会把它识别为普通文本,不会转换成分数,前端显示时仍然会正常显示为1/4,完美匹配你的文档规范。
2. 添加自定义代码禁用SKU自动格式化
在当前主题的functions.php文件中添加以下代码:
// 禁用SKU的自动格式化 add_filter( 'woocommerce_format_sku', function( $formatted_sku, $sku, $product ) { return $sku; // 直接返回原始SKU文本 }, 10, 3 );
这段代码会强制WooCommerce输出原始的SKU内容,跳过所有自动格式化步骤,从根源上阻止分数转换。
3. 针对性禁用WordPress文本美化功能
如果是WordPress的wptexturize函数导致的自动转换,可以添加代码在获取SKU时临时关闭该功能:
add_filter( 'woocommerce_product_get_sku', function( $sku ) { remove_filter( 'the_content', 'wptexturize' ); return $sku; } ); add_filter( 'woocommerce_product_variation_get_sku', function( $sku ) { remove_filter( 'the_content', 'wptexturize' ); return $sku; } );
这个方法仅针对SKU字段生效,不会影响网站其他内容的文本格式。
内容的提问来源于stack exchange,提问作者stratalign_nz
相关产品推荐
相关产品推荐

