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

如何无需插件将WordPress父slug下页面迁移至新自定义文章类型slug

无需插件实现WordPress页面到自定义文章类型的迁移

可以不用插件完成这个迁移,核心是通过修改数据库调整文章类型,配合重写规则确保链接正常,具体步骤如下:

1. 确认自定义文章类型配置

如果需要保留原页面的层级关系,确保注册new-slug自定义文章类型时,supports数组包含'page-attributes',这样迁移后仍可设置父项。注册代码示例片段:

register_post_type('new-slug', array(
    // 其他配置项
    'supports' => array('title', 'editor', 'page-attributes'), // 包含page-attributes
    'rewrite' => array('slug' => 'new-slug'), // 确保slug设置正确
));

2. 修改数据库迁移文章类型

操作前必须备份数据库,避免数据丢失:

  1. 登录网站的phpMyAdmin,找到WordPress对应的数据库
  2. 打开wp_posts表(数据库前缀可能不是wp_,以实际设置为准)
  3. 执行SQL语句,将目标页面的post_type从page改为new-slug:
    • 如果要迁移/current-slug/父页面及其所有子页面:
      UPDATE wp_posts SET post_type = 'new-slug' 
      WHERE post_type = 'page' 
      AND (post_name = 'current-slug' OR post_parent = (SELECT ID FROM wp_posts WHERE post_name = 'current-slug' AND post_type = 'page'));
      
    • 如果仅迁移特定子页面,可根据实际条件调整WHERE子句

执行后,这些页面会从后台「页面」管理区消失,出现在new-slug自定义文章类型的管理菜单中。

3. 刷新永久链接规则

登录WordPress后台,进入「设置」→「固定链接」,直接点击「保存更改」,无需修改任何设置,让WordPress刷新重写规则,确保新的自定义文章类型链接生效。

4. 添加重定向避免404(可选但推荐)

为了让旧链接自动跳转到新地址,在主题的functions.php中添加以下代码:

add_action('init', 'current_to_new_slug_redirect');
function current_to_new_slug_redirect() {
    global $wp_rewrite;
    // 匹配旧路径,重定向到新路径
    add_rewrite_rule('^current-slug/?$', 'index.php?new-slug=current-slug', 'top');
    add_rewrite_rule('^current-slug/(.*)$', 'index.php?new-slug=$matches[1]', 'top');
    $wp_rewrite->flush_rules(false);
}

添加完成后,再次保存固定链接设置,使重定向规则生效。

注意事项

  • 数据库操作有风险,务必提前备份
  • 迁移后检查后台自定义文章类型管理区,确认页面已正确迁移
  • 测试前台旧链接和新链接的访问状态,确保无404或跳转异常

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 16:42:29