重命名自定义帖子类型和分类法


31

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

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


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

Answers:


47

重命名帖子的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>';

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


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

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

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

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

6

您好@Derek Perkins:

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

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


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

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

4

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

我已经成功地使用了转换帖子类型来批量更改帖子。

对于转换个人帖子,则帖子类型切换器是一个更好的选择。


感谢您发布这些链接。我自己运行SQL查询很好,但是对于发布中遇到的其他问题,这些无疑会派上用场。
德里克·帕金斯

这似乎可以转换帖子类型,而不是重命名它们
vladkras 2015年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.