如何将托管主机上的 WordPress/WooCommerce 站点复制到本地?
可以,你的理解基本正确。通常需要复制完整的 WordPress 站点文件和对应的 MySQL 数据库,再根据本地环境调整 wp-config.php 和站点网址。文件可以通过文件管理器或 FTP/SFTP 获取,数据库通常可以用 phpMyAdmin 导出。
站点文件中的 wp-config.php 也需要单独检查。只复制文件或只导出数据库,通常都无法还原完整站点。
从托管账户中获取哪些内容?
1. 下载完整的站点目录
在控制面板中查找 File Manager(文件管理器),或使用账户提供的 FTP/SFTP 连接信息下载文件。站点根目录通常能看到:
wp-admin/
wp-content/
wp-includes/
wp-config.php
index.php
根目录可能位于 public_html、www 或某个域名对应的目录,具体取决于托管配置。不要直接假定账户中第一个目录就是目标站点目录。
尽量下载完整目录,尤其要包含 wp-content 下的插件、主题和上传文件。启用“显示隐藏文件”后,检查是否还有 .htaccess 等文件。.htaccess 是否需要在本地使用,取决于本地 Web 服务器。
如果站点使用外部媒体存储,或把内容目录放在默认路径之外,还需要单独处理这些资源。
2. 导出站点使用的数据库
先查看 wp-config.php 中的 DB_NAME,确认站点使用的是哪个数据库,避免导出同一账户里的其他数据库。
在控制面板中查找 MySQL Databases、Databases 或 phpMyAdmin。进入 phpMyAdmin 后,选择对应数据库,通过 Export(导出)功能以 SQL 格式导出全部表,确保包含表结构和数据。
WooCommerce 的商品、订单、用户和设置等数据分布在数据库表中,导出时不要只选择名称看起来与商品或订单相关的表。
3. 保留配置供本地调整
重点检查以下配置:
DB_NAME、DB_USER、DB_PASSWORD、DB_HOST:数据库连接信息。$table_prefix:数据库表前缀。WP_HOME、WP_SITEURL:如果存在,可能固定了站点网址。- 自定义路径、缓存和外部服务配置。
从问题中无法确定 Sered 账户实际使用的控制面板和菜单名称,可以按上述功能名称查找。若账户没有文件下载或数据库导出权限,需要由账户管理员提供对应备份。
如何在本地还原?
1. 准备本地运行环境
准备本地 Web 环境,确保它支持 PHP 以及 MySQL 或兼容数据库,并配置一个本地域名,例如 http://shop.local。PHP 版本和扩展应满足当前站点、主题及插件的要求,尽量参考线上环境。
将下载的站点文件放入本地站点目录,创建本地数据库,再通过本地 phpMyAdmin 或数据库工具导入 SQL 文件。
2. 修改 wp-config.php
把数据库连接改为本地值。以下只是示例,需要替换为实际配置:
define( 'DB_NAME', 'shop_local' );
define( 'DB_USER', 'local_user' );
define( 'DB_PASSWORD', 'replace_with_local_password' );
define( 'DB_HOST', 'localhost' );
修改已有定义,不要重复添加。保留与导入数据库一致的 $table_prefix,否则 WordPress 可能找不到原有表。
线上使用的数据库字符集等配置通常可以先保留,只有确认本地存在兼容问题时再调整。
3. 替换数据库中的站点网址
数据库中通常保存着线上域名,包括站点设置、图片地址和插件配置。仅修改 wp-config.php,不一定能处理全部地址。
如果本地已安装 WP-CLI,可在站点根目录执行以下示例。请先备份本地数据库,并把两个网址替换为实际值:
wp search-replace 'https://example.com' 'http://shop.local' --all-tables-with-prefix --skip-columns=guid --dry-run
确认预览结果后,再执行正式替换:
wp search-replace 'https://example.com' 'http://shop.local' --all-tables-with-prefix --skip-columns=guid
这些命令应连接本地数据库。--all-tables-with-prefix 会处理使用当前表前缀的表;若数据库中还有其他用途的表,应先检查处理范围。
WordPress 和插件可能使用 PHP 序列化数据。直接对 SQL 文件做全文替换,或执行普通 SQL REPLACE(),可能破坏序列化数据中的长度信息。没有 WP-CLI 时,应选择能正确处理序列化数据的迁移或替换工具。
如果 wp-config.php 已定义 WP_HOME 或 WP_SITEURL,也要同步调整。若导入的是 WordPress Multisite,域名映射和网络配置还需要额外处理,不能直接套用单站点流程。
WooCommerce 本地副本需要注意什么?
首次通过浏览器访问本地副本前,先检查邮件发送、支付网关、Webhook、库存同步和其他外部集成配置。复制的配置可能仍带有生产凭据,需要按实际使用的插件停用相关集成或切换到测试配置。
可以在本地 wp-config.php 中设置:
define( 'WP_ENVIRONMENT_TYPE', 'local' );
define( 'DISABLE_WP_CRON', true );
DISABLE_WP_CRON 用于阻止页面访问触发 WordPress 内置的定时任务机制,但不会停用所有外部调度、手动任务或插件请求。WP_ENVIRONMENT_TYPE 也不能代替对支付、邮件等服务的单独配置。
真实订单和客户资料会随数据库一起复制。日常开发时,应按需要脱敏,并避免将数据库备份、生产密钥和 wp-config.php 提交到公开仓库。
还原后如何检查?
先检查首页、后台登录、商品页面和图片是否正常,确认浏览器不会跳回线上域名。若页面链接出现 404,可进入后台“设置 → 固定链接”重新保存,并检查本地 Web 服务器的重写配置。
如果出现数据库连接错误,优先检查本地数据库凭据是否正确、数据库是否成功导入,以及 $table_prefix 是否匹配。文件和数据库尽量取自同一备份时间;持续接单的商城尤其要注意两者的一致性。
备注:内容仅供参考。
