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

时间:2010-11-14 作者:jerclarke

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

转换帖子时,我只想获取该类别中的所有帖子,添加posmeta,然后删除该类别,这样我就可以重新加载该函数,直到该类别中没有更多帖子。

不过,我找不到一个好的函数来删除帖子中的一个术语。我想给它一个post-id和术语taxonomy+id,并让它为我处理。

如果有人知道的话,我也对可以为我进行转换的插件感兴趣。我找不到任何可以执行cat->posteta的操作,而Scribu的插件可以处理相反的操作。

2 个回复
最合适的回答,由SO网友:Rarst 整理而成

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

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

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

SO网友:nydame

wp\\u set\\u object\\u术语的一个很好的替代方法是wp_set_post_terms() 如果您正在处理post对象。它有一个布尔第四参数,可以让您决定是只添加术语还是覆盖现有术语。

结束