WPML WordPress:多语言产品库存数量锁定图标问题解决方法
解决WPML翻译产品库存锁定无法修改的问题
我之前在维护多语言电商站点的时候也碰到过一模一样的问题!WPML默认会把产品库存这类核心数据设置为和源语言产品同步,所以翻译版本的库存字段会被锁定没法直接编辑。给你几个简便的解决思路,按需求选就行:
方法一:修改WPML全局同步设置(推荐)
这是最根本的解决方式,适合需要长期独立管理各语言版本库存的场景:
- 登录WordPress后台,进入「WPML → 设置 → 自定义帖子类型和分类法同步」
- 找到「产品」(如果用了自定义产品类型就选对应的),展开它的同步选项列表
- 找到「库存数量(_stock)」这一项,把它从「同步」切换为「不同步」
- 保存设置后,再去编辑翻译版产品,库存字段就会解锁,直接输入新数值即可
方法二:用快速编辑绕开锁定
如果只是偶尔需要修改单个翻译产品的库存,不想改动全局设置,可以试试这个快捷方式:
- 进入「产品」列表页面,找到目标翻译版产品
- 鼠标悬停在产品标题上,点击出现的「快速编辑」选项
- 在快速编辑面板里直接修改「库存数量」,点击「更新」就能生效——这个方式会绕过编辑页面的字段锁定限制
方法三:用代码片段临时解锁
如果前两种方法都不适用(比如权限限制没法改WPML设置),可以加一段简单的代码来解锁库存字段:
add_filter( 'wpml_is_translatable_field', 'unlock_stock_quantity_for_translations', 10, 4 ); function unlock_stock_quantity_for_translations( $is_translatable, $field_name, $post_type, $field_type ) { // 针对产品类型的库存字段取消同步 if ( 'product' === $post_type && '_stock' === $field_name ) { return false; } return $is_translatable; }
你可以把这段代码添加到主题的functions.php文件(建议用子主题,避免主题更新丢失),或者用自定义代码插件(比如Code Snippets)来添加。添加后,翻译版产品的库存字段就会自动解锁。如果之后需要恢复同步,删掉这段代码即可。
内容的提问来源于stack exchange,提问作者Ruslanas Sakavičius




