
本文详解如何通过 MySQL 命令或 WordPress 钩子,批量将 WooCommerce 所有产品中可下载文件的原始域名(如 https://my-site.com)统一替换为新域名(如 https://replace-site.com),确保文件链接有效且不破坏数据完整性。
本文详解如何通过 mysql 命令或 wordpress 钩子,批量将 woocommerce 所有产品中可下载文件的原始域名(如 `https://my-site.com`)统一替换为新域名(如 `https://replace-site.com`),确保文件链接有效且不破坏数据完整性。
在 WooCommerce 中,可下载文件的 URL 通常以完整绝对路径形式存储于数据库的 wp_postmeta 表中(对应 '_downloadable_files' 或 '_wc_attachment_urls' 等 meta key),也可能出现在商品描述(wp_posts.post_content)或自定义字段中。若需为全部 2500+ 产品统一更换文件域名,直接操作数据库是最高效、最彻底的方式——但务必提前备份,避免误操作导致链接丢失或数据损坏。
✅ 推荐方案:安全执行 MySQL 批量更新
以下 SQL 语句将精准定位并替换所有含旧域名的可下载文件路径(注意:请将 olddomain.com 和 newdomain.com 替换为你的真实域名,保留协议与斜杠格式一致性,例如 https://my-site.com → https://replace-site.com):
-- 1. 更新站点基础设置(必要)
UPDATE wp_options SET option_value = REPLACE(option_value, 'https://my-site.com', 'https://replace-site.com')
WHERE option_name IN ('home', 'siteurl');
-- 2. 更新文章/商品正文中的链接(如嵌入的下载说明)
UPDATE wp_posts SET post_content = REPLACE(post_content, 'https://my-site.com', 'https://replace-site.com');
-- 3. 关键步骤:更新所有 postmeta 中的文件路径(含下载文件数组、附件URL、自定义字段等)
UPDATE wp_postmeta
SET meta_value = REPLACE(meta_value, 'https://my-site.com', 'https://replace-site.com')
WHERE meta_value LIKE '%https://my-site.com%';
-- 4. (可选)更新评论内容中的链接(如用户分享的下载地址)
UPDATE wp_comments SET comment_content = REPLACE(comment_content, 'https://my-site.com', 'https://replace-site.com');
⚠️ 重要注意事项:
- ? 强制备份:执行前务必备份整个数据库(推荐使用
mysqldump或 phpMyAdmin 导出); - ? 先测试再全量:建议先在开发环境运行
SELECT预览影响范围,例如:SELECT post_id, meta_key, meta_value FROM wp_postmeta WHERE meta_key = '_downloadable_files' AND meta_value LIKE '%my-site.com%';
- ? 路径一致性:确保新旧域名的协议(
https://)、端口、子路径结构一致,否则REPLACE可能截断路径; - ? 刷新重写规则:SQL 执行后,登录 WordPress 后台 →「设置」→「固定链接」→ 点击「保存更改」,以刷新 .htaccess 或 Nginx 重写规则;
- ? 插件兼容性提醒:若使用了 CDN、对象存储(如 S3 插件)或自定义下载逻辑,需额外检查其配置是否覆盖了默认文件 URL,必要时配合插件 API 调整。
? 进阶建议:如需长期解耦域名与文件路径,可考虑在 functions.php 中钩子化动态重写(仅适用于前端展示层):
add_filter('woocommerce_download_file_url', 'rewrite_download_domain', 10, 2);
function rewrite_download_domain($url, $download) {
return str_replace('https://my-site.com', 'https://replace-site.com', $url);
}
但该方式不修改数据库原始值,仅实时替换前端生成的 URL,适合临时过渡或 CDN 场景。
总结:对于 2500+ 产品的规模化域名迁移,MySQL 批量更新是可靠首选;配合备份、预检与 permalink 刷新,可在分钟级完成全站可下载文件链接的无缝切换。










