我开始开发具有十几种自定义帖子类型的网站。我想重命名其中的一些,不仅是显示值,而是实际的自定义帖子类型名称。但是,我担心仅通过运行SQL更新查询,我会错过一些我需要更改或覆盖部分序列化数据的地方。我已经输入了3,000多个项目,所以我不能只使用干净的数据库重新启动。

重命名自定义帖子类型的最佳方法是什么?
如何重命名分类法?

评论

同样,有关自定义.htaccess重写规则的后续问题。会有很多剩余规则阻塞我的数据库吗?我尚未启动该站点,因此不需要重定向任何旧链接。

#1 楼

重命名帖子的SQL查询:

UPDATE  `wp_posts` SET  `post_type` =  '<new post type name>' WHERE  `post_type` = '<old post type name>';


重命名分类的SQL查询:

UPDATE  `wp_term_taxonomy` SET  `taxonomy` =  '<new taxonomy name>' WHERE  `taxonomy` = '<old taxonomy name>';


这应该采取照顾所有数据库区域。只需记住在帖子类型或分类法注册的代码中匹配新名称即可。据我所知,这尚未在任何插件中处理。

评论


很好的答案,正是我所需要的。这是一个提示,以防其他人遇到与我相同的问题:运行查询并更新代码后,一切基本正常,但是当我尝试转到单个内容项的页面时,出现404错误。我认为某些永久链接缓存需要重置;我转到工具>永久链接,然后单击保存,然后详细页面开始工作。

–安迪·吉斯勒(Andy Giesler)
2011年3月11日20:06

当我这样做时,我也更新了Guid字段。如@AndyGiesler所述,这可能有助于使其不必重新生成永久链接。只需在UPDATE语句中包括以下内容:guid = REPLACE(guid,'<旧帖子类型名称>','<新帖子类型名称>')

– rinogo
13年1月1日在20:44



只是向rinogo的评论添加更多信息,这是更新GUID的一种更安全的方法:UPDATE wp_posts SET guid = REPLACE(guid,'post_type = <旧帖子类型名称>','post_type = <新帖子类型名称>');

–大卫
2014年2月13日下午5:49

只是要注意,在多站点上运行时,您需要注意表名

–morse
2014年5月21日在20:02

#2 楼

@Derek Perkins,您好:

一般来说,@ John P Bloch的回答很明确,但有警告。插件,甚至自定义主题都可以并且可以存储帖子类型信息,因此,为了确保您不会破坏数据,您需要确保插件和主题不存储帖子类型,或者如果您这样做,则更新数据也一样

您能告诉我们您使用的是什么插件吗?

评论


那是个很好的观点。我正在建立主题自定义,因此我绝对必须仔细检查并更改我的代码。我没有任何存储自定义帖子类型信息的插件。

–德里克·帕金斯(Derek Perkins)
2010年9月1日下午5:23

这是个好的观点。我使用的是“高级自定义字段”,对于该帖子所附的每个字段组,您都必须手动将其重置为新的CPT名称。在那之后,它工作正常。

–克里斯·雷(Chris Rae)
2015年12月11日在20:51

#3 楼

如果您不想自己手动执行SQL查询,则可以使用几个插件:

我已经成功地将“转换帖子类型”用于批量更改帖子。

要转换单个帖子,则帖子类型切换器是一个更好的选择。

评论


感谢您发布这些链接。我自己运行SQL查询很好,但是对于那些在此发布中遇到的其他人,这些查询肯定会派上用场。

–德里克·帕金斯(Derek Perkins)
2010年9月1日下午5:24

这似乎是转换帖子类型,而不是重命名它们

–vladkras
15年8月15日在12:49