以编程方式从帖子中删除类别/术语的最佳方法


8

我正在编写一个脚本,将给定类别中的所有帖子转换为使用postmeta标志(MySQL的测试表明,在与我一样大的网站上,这将导致查询时间的显着减少)。

转换帖子时,我只想获取类别中的所有帖子,请添加postmeta然后删除类别,这将允许我重新加载该功能,直到类别中没有更多帖子为止。

我找不到从帖子中删除术语的好的功能。我想给它发帖ID和术语分类+ ID并为我处理。

我也对可以帮助我完成转换的插件感兴趣,如果有人知道的话。我找不到任何做过cat-> postmeta的东西,这与Scribu插件可以处理的相反情况不同。


您是否要通过API来执行此操作,还是可以通过SQL查询来执行此操作?这样做并不难,只需一个查询即可插入新的postmeta值,一个查询即可删除类别后关系,也许一个查询即可更新类别计数。
Jan Fabry

我绝对想使用API​​。在这种情况下,类别计数等不是我要考虑的。wp_get_object_terms()/ wp_set_object_terms()已经使操作术语变得非常容易,但是我希望从内核获得一种功能的解决方案。
jerclarke 2010年

Answers:


6

嗯,也不记得或找不到拟合函数。

wp_set_object_terms()在多个包装器(如)中使用的wp_set_post_categories()。它可以覆盖帖子的类别。

因此,您可以获取帖子类别,检查不需要的类别,然后将其写回(在这种情况下排除不需要的类别)。


到目前为止,这是最好的解决方案,我可能会使用。使用get_object_terms()获取,取消设置()我不想要的那个,然后使用wp_set_object_terms()重新保存数组。不幸的是,没有wp_set_object_term()和wp_remove_object_term()。
jerclarke 2010年

这就是我过去的做法。这很笨拙而且有待改进,但我相信这是最好的选择。
编辑者
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.