You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

网站从PHP迁移至WordPress:寻求数据库导出导入自定义脚本协助

非WordPress PHP站到Hostinger WordPress的数据迁移方案

1. 导出原有网站数据库

命令行方式(推荐)

直接用mysqldump导出完整SQL文件:

mysqldump -u [原有数据库用户名] -p [原有数据库名] > old_site_data.sql

执行后输入数据库密码即可生成备份文件。

phpMyAdmin方式

如果没有命令行权限,通过原有主机的phpMyAdmin操作:

  • 登录phpMyAdmin,选择目标数据库
  • 点击顶部「导出」选项,选择「自定义」模式
  • 勾选需要迁移的数据表,导出格式选「SQL」,点击「执行」下载备份文件

2. 梳理数据映射关系

先对比原有数据表结构和WordPress核心表的对应关系,核心映射示例:

原有数据字段WordPress对应表字段说明
文章标题wp_posts.post_title需转义特殊字符
文章内容wp_posts.post_content保留HTML格式需确保合规
发布时间wp_posts.post_date转换为MySQL datetime格式
文章状态wp_posts.post_status设为publish表示已发布
内容类型wp_posts.post_type普通文章用post,页面用page
分类名称wp_terms.name/wp_term_taxonomy.taxonomy分类对应category,标签对应post_tag

3. 编写自定义迁移脚本(PHP示例)

以下是基础的迁移脚本框架,需根据你的实际数据表结构调整:

<?php
// 原有数据库连接信息
$old_db_host = '原有数据库主机';
$old_db_user = '原有数据库用户名';
$old_db_pass = '原有数据库密码';
$old_db_name = '原有数据库名';

// Hostinger上WordPress的数据库连接信息(可在wp-config.php中找到)
$wp_db_host = 'localhost'; // Hostinger默认通常是localhost
$wp_db_user = 'WordPress数据库用户名';
$wp_db_pass = 'WordPress数据库密码';
$wp_db_name = 'WordPress数据库名';

// 连接两个数据库
$old_conn = new mysqli($old_db_host, $old_db_user, $old_db_pass, $old_db_name);
$wp_conn = new mysqli($wp_db_host, $wp_db_user, $wp_db_pass, $wp_db_name);

if ($old_conn->connect_error || $wp_conn->connect_error) {
    die('数据库连接失败: ' . $old_conn->connect_error . ' | ' . $wp_conn->connect_error);
}

// 查询原有文章数据(替换为你的实际表名和字段)
$old_posts_query = "SELECT id, title, content, publish_time, category FROM old_articles WHERE status = 'active'";
$old_posts_result = $old_conn->query($old_posts_query);

while ($post = $old_posts_result->fetch_assoc()) {
    // 处理发布时间格式(假设原有时间是时间戳,转换为datetime)
    $post_date = date('Y-m-d H:i:s', $post['publish_time']);
    
    // 插入到wp_posts表
    $wp_insert_post = $wp_conn->prepare("INSERT INTO wp_posts (post_title, post_content, post_date, post_status, post_type, comment_status, ping_status) VALUES (?, ?, ?, 'publish', 'post', 'closed', 'closed')");
    $wp_insert_post->bind_param("sss", $post['title'], $post['content'], $post_date);
    $wp_insert_post->execute();
    
    $new_post_id = $wp_conn->insert_id;
    
    // 处理分类关联(示例:将原有分类映射到WordPress分类)
    $category_name = $post['category'];
    // 检查分类是否已存在
    $check_term = $wp_conn->prepare("SELECT term_id FROM wp_terms WHERE name = ?");
    $check_term->bind_param("s", $category_name);
    $check_term->execute();
    $check_term_result = $check_term->get_result();
    
    if ($check_term_result->num_rows === 0) {
        // 插入新分类
        $wp_conn->query("INSERT INTO wp_terms (name, slug, term_group) VALUES ('$category_name', '" . sanitize_title($category_name) . "', 0)");
        $term_id = $wp_conn->insert_id;
        // 关联分类 taxonomy
        $wp_conn->query("INSERT INTO wp_term_taxonomy (term_id, taxonomy, description, parent, count) VALUES ($term_id, 'category', '', 0, 1)");
    } else {
        $term_row = $check_term_result->fetch_assoc();
        $term_id = $term_row['term_id'];
        // 更新分类计数
        $wp_conn->query("UPDATE wp_term_taxonomy SET count = count + 1 WHERE term_id = $term_id AND taxonomy = 'category'");
    }
    
    // 关联文章与分类
    $wp_conn->query("INSERT INTO wp_term_relationships (object_id, term_taxonomy_id, term_order) VALUES ($new_post_id, (SELECT term_taxonomy_id FROM wp_term_taxonomy WHERE term_id = $term_id AND taxonomy = 'category'), 0)");
}

// 关闭连接
$old_conn->close();
$wp_conn->close();
echo '数据迁移完成';
?>

脚本注意事项

  • 替换所有占位符(如原有数据库信息、表名、字段名)为实际值
  • 先在本地测试脚本,避免直接操作线上数据库
  • 使用prepare语句防止SQL注入
  • 若有自定义字段,需对应插入wp_postmeta表

4. 在Hostinger上执行迁移

上传脚本到Hostinger主机

  • 通过Hostinger的文件管理器或FTP,将脚本上传到网站根目录(确保不在公开访问路径,执行后删除)
  • 访问脚本URL(如yourdomain.com/migrate.php)执行迁移

验证迁移结果

  • 登录WordPress后台,检查「文章」「分类」菜单下的数据是否完整
  • 访问前端页面,确认内容显示正常
  • 进入「设置-固定链接」,点击「保存更改」刷新链接规则

5. 后续清理

  • 删除迁移脚本,避免安全风险
  • 备份WordPress数据库,防止数据丢失

内容的提问来源于stack exchange,提问作者Joelma Teodoro

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.01 21:24:52