一、为什么需要 CSV 批量导入
一个表格搞定上百个产品上架。
假设你从供应商那边拿到一份产品资料:带名称、价格、库存、图片链接。如果不走批量导入,你只能在 WooCommerce 后台一个个手工建,50 个产品就够你折腾两小时。CSV 批量导入就是把这些数据一次性灌进 WooCommerce,几分钟完成。

💡 导入前请先备份你的网站数据,或在 staging 站点上先跑一遍。导入一旦执行,不能撤销。
二、导出 CSV 作为模板
直接在 Excel 里写 CSV 很容易出错,最稳的做法是先导出一个现有产品的 CSV,照着格式改。
📤 2.1 导出全部产品
- 进入
产品 → 所有产品 点击顶部的
Export按钮
在 Export Products 页面选择:
- Which columns should be exported(导出哪些列):默认 Export all columns;也可以手动选列
- Export product types(产品类型):默认全部,可以只导 simple、variable 等
- Export product categories(产品分类):默认全部,可选某个分类
Export all custom meta(导出自定义 meta):如果产品上挂了插件添加的自定义字段,勾上这项,导出的列名带
meta:前缀
点击
Generate CSV- 浏览器自动下载 CSV 文件
✂️ 2.2 怎么用导出的 CSV 做模板
- 用 Google Sheets 或 LibreOffice Calc 打开导出的 CSV(不推荐 Excel,有编码问题)
- 保留第一行表头
- 删掉或改掉下面的产品行,换成你要导入的新产品数据
- 另存为 CSV(UTF-8 编码)
⚠️ CSV 必须存为 UTF-8 编码,否则中文会乱码。Google Sheets 导出 CSV 默认就是 UTF-8;LibreOffice 选择时勾选 UTF-8。Excel 出 CSV 默认可能不是 UTF-8。
三、CSV 核心字段说明
WooCommerce 内置 importer 识别的字段名是固定的,列名写错就不会被映射,导入后对应值为空。

📋 3.1 必填字段
| 列名 | 说明 | 示例 |
|---|---|---|
SKU | 库存单位。缺失时自动生成 | TSHIRT-BLK-S |
Name | 产品标题 | Premium Cotton T-Shirt |
💡 除这 2 个必填字段外,其他全是可选。但常规价格(Regular price)如果不填,产品会以 0 元出售或没法购买,实际上强烈建议每行都填。
📋 3.2 常用字段
| 列名 | 说明 | 示例 |
|---|---|---|
Type | 产品类型。可选 simple、variable、grouped、external、variation、virtual、downloadable。多个值可用逗号连用,如 simple, virtual | simple |
Published | 1=已发布, 0=私有, -1=草稿;当前版本也接受 true/false | 1 |
Regular price | 常规价格 | 29.99 |
Sale price | 促销价格 | 19.99 |
Categories | 分类。层级用 > 表示,多个分类用逗号。如 Clothing > T-Shirts, Summer Sale | Clothing > T-Shirts |
Tags | 标签,逗号分隔 | best-seller, new-arrival |
Stock | 库存数量,填数字启用库存管理。留空=不管库存 | 50 |
Backorders allowed? | 缺货下单:1=允许, 0=不允许, notify=允许但通知客户 | 0 |
In stock? | 1=有货, 0=缺货 | 1 |
Weight (kg) | 重量,只填数字 | 0.3 |
Images | 图片 URL,多个用逗号。第一张是主图,后面的是相册图 | https://example.com/img.jpg, https://example.com/img2.jpg |
📋 3.3 多值字段的格式要求
- 多个值用逗号分隔,用引号包裹整段。如
"Small, Medium, Large" - 如果某个值本身含逗号(比如分类名是 “Places, People, Cities”),必须用反斜杠转义:
Places\, People\, Cities - 布尔值用 1 或 0,不要用 yes/no 或 true/false
- 日期格式 YYYY-MM-DD
📋 3.4 变体专用字段
| 列名 | 说明 | 示例 |
|---|---|---|
Parent | 父产品 ID 或 SKU。变体行必须填,其余留空 | id:100 或 tshirt |
Attribute 1 name | 属性名称,如 Color、Size | Size |
Attribute 1 value(s) | 属性值。父产品填全部可选值,变体只填该变体对应的值 | 父:S, M 变体:S |
Attribute 1 visible | 1=前台可见, 0=不可见 | 1 |
Attribute 1 global | 1=全局属性, 0=自定义属性 | 0 |
Attribute 1 default | 可变产品的默认属性值 | M |
需要多个属性时,属性列从 1 开始递增。第二个属性用 Attribute 2 name、Attribute 2 value(s)、Attribute 2 visible、Attribute 2 global,以此类推。
四、批量编辑常见操作
把 CSV 下载下来编辑完再导回去,是批量改价、批量调库存最快的方法。
💰 4.1 批量改价
- 导出产品 CSV
- 在 Google Sheets 里打开,直接改
Regular price这一列 - 比如想统一加 2 美元,可以用公式
=C2+2批量算 - 另存为 CSV UTF-8
- 进入
产品 → 所有产品,点Import - 选择 CSV 文件后,勾选
Update existing products - 点击
Continue - 在 Column Mapping 页面检查映射无误,点击
Run the Importer

💡 CSV 里的
ID或SKU用来匹配已有产品。有 ID 就按 ID 匹配,没 ID 就按 SKU 匹配。同一个 SKU 已经存在且没勾 Update,该行会被跳过。
📦 4.2 批量更新库存
- 导出 CSV,保留 SKU、Stock、In stock? 三列
- 改
Stock列为实际库存数量 In stock?列同步调整:0 以上填 1,0 填 0- 勾选
Update existing products导入
🏷️ 4.3 批量调整分类
- 导出 CSV,保留 SKU 和 Categories 两列
- 按格式填新分类,多个用逗号,层级用
> - 示例:一行同时属于两个分类,填
"Clothing > T-Shirts, Summer Sale" - 勾选 Update existing products 导入
⚠️ 不需要更新的字段留空即可——更新已有产品时,空白单元格会被直接忽略,不会清空产品里已有的数据。只保留 ID/SKU 列和你要改的那几列,是最安全的做法。
🔄 4.4 简单产品转可变产品(两步导入法)
如果想通过 CSV 把已有的简单产品变成可变产品(添加颜色、尺码等变体),需要分两次导入:
第一步:更新父产品为 variable 类型并添加属性
- 导出产品 CSV,找到目标产品行
- 把该行的
Type从simple改为variable - 添加属性列,如
Attribute 1 name填Size,Attribute 1 value(s)填S, M, L,Attribute 1 visible填1,Attribute 1 global填0 - 勾选 Update existing products,导入
第二步:导入变体行
- 在新的 CSV 中,添加变体行,每行一个规格
Type填variation,Parent填父产品的 SKU 或 IDAttribute 1 value(s)只填该变体对应的值(如S),不是全部值- 不勾选 Update existing products,导入即可创建变体
💡 第二步导入前记得给每个变体行设置唯一的 SKU,否则可能创建失败。
五、导入新产品
新导入产品和批量更新用的是同一个入口,区别只在是不是勾 Update existing products。
📥 5.1 上传 CSV
- 进入
产品 → 所有产品 - 点击顶部
Import按钮 - 在 Upload CSV file 页面,点击
Choose File选择 CSV 文件 - 这次不勾 Update existing products(你是在导入新产品,不是更新已有)
- 点击
Continue
🔗 5.2 Column Mapping 映射列
- 进入 Column Mapping 页面,系统会自动匹配识别出的列名
- 左边是 CSV 里的列名和样例数据
右边是映射到的产品字段

未识别的列默认设为 “Do not import”,需要改成对应字段,或保持不导入
- 想跳过某列就留 Do not import
- 自定义 meta 字段(表头带
meta:前缀)会自动识别为 meta - 检查完后点击
Run the Importer
⏳ 5.3 等待导入完成
导入会在后台分批执行,页面会显示进度条。这期间不要刷新页面、不要切走,否则可能导一半中断。
完成后会显示摘要:
- 成功导入了多少个产品
- 跳过了多少个,每个跳过原因

💡 如果被跳过的产品你想查原因,导入完成页面下方会有一份跳过日志,每行写明原因(SKU 重复、分类名不存在等)。
六、批量更新已有产品
更新已有产品的方式与导入新产品基本一样,区别在勾 Update existing products。
🔄 6.1 操作步骤
- 准备 CSV,至少包含 ID 或 SKU 列,外加你要更新的字段列
- 进入
产品 → 所有产品,点Import - 选择文件
- 勾选
Update existing products - 点击
Continue - 检查 Column Mapping
- 点击
Run the Importer

⚠️ 6.2 更新的匹配规则
- 有
ID列时按 ID 匹配,没有时按SKU匹配 - 同时填了两列,优先按 ID 匹配
- ID 列直接填纯数字即可(
id:100这种前缀写法只用于变体行的Parent列,见 3.4) - SKU 不需要前缀,直接填
- 匹配不上的行会跳过,不会创建新产品
七、错误排查
❌ 7.1 提示 “Sorry, this file type is not permitted for security reasons.”
原因:WordPress 误判了 CSV 的文件类型。CSV 里嵌入 HTML 时容易触发。
解决方法:
- 先确认文件确实是以
.csv后缀保存的 - 用 FTP 或主机文件管理器把 CSV 上传到
wp-content/uploads/目录 回到 Import 页面,打开
Advanced Options
在服务器文件路径里填上传后的完整路径,例如
/var/www/html/wp-content/uploads/products.csv- 然后点 Continue 开始导入
- 临时应急可以在
wp-config.php中加一行define( 'ALLOW_UNFILTERED_UPLOADS', true );,导入完后马上删掉
❌ 7.2 产品全部被跳过
原因:CSV 里的 SKU 或 ID 已存在,但没勾 Update existing products。
解决方法:
- 新导入:把 CSV 里的已存在 SKU 改成新 SKU
- 要更新:回到第一步勾上 Update existing products
❌ 7.3 图片不显示
原因:
- URL 无法直接访问
- URL 后面有重定向脚本
- 图片在云存储且权限是私有的
解决方法:
- 复制 URL 到浏览器直接能打开才能用
- 如果是私有图床,先把图片传到本站媒体库再引用文件名
- 如果是 Google Drive 之类的分享链接也不行,要么直传要么传到本站
❌ 7.4 属性值丢失
原因:
Attribute 1 name拼写不一致Attribute 1 global设置错误- 自定义 meta 字段没用
meta:前缀
解决方法:
- 全局属性在
产品 -> 属性先建好,CSV 里填的名称要跟后台完全一致 - 自定义属性
Attribute 1 global填 0 - 自定义 meta 的列名加
meta:前缀
❌ 7.5 中文乱码
原因:CSV 文件不是 UTF-8 编码。
解决方法:
- 用 Google Sheets 编辑和导出,默认就是 UTF-8
- 用 LibreOffice Calc 时,另存为 CSV 时在编码选项里选 UTF-8
- 用 Excel 时要先确认:Excel 365 可以选 UTF-8,旧版 Excel 默认 GBK,不要用
- 已经乱码了,打开后另存为 UTF-8 再导入一次
❌ 7.6 导入到一半超时
原因:服务器内存或执行时间限制太小,文件太大。
解决方法:
- 把 CSV 拆成小份(比如每 200 行一份)分批导入
- 通过 hosting 后台或
wp-config.php调高memory_limit和max_execution_time - 升级到 WooCommerce 内置 importer 不够用的规模时,考虑用 Product CSV Import Suite 付费扩展



















- 最新
- 最热
查看全部