我强烈怀疑您之所以需要没有提到/共享的SQL,是因为由于PHP执行时间的限制,您无法使用WP函数来获取帖子并在单个请求中手动执行,或者您不知道如何执行。
遗憾的是,通过SQL进行操作并不能保证这会起作用,此外,您将破坏所有涉及的缓存,所有术语日志计数都将被破坏,以及其他一些事情。
要做到这一点,最好的方法是使用WP CLI,例如,这里我们将所有帖子放在类别X中,放在类别Y中,然后将它们从X中删除:
# get all the post IDs in category x
posts=wp post list --category_name="x" --field="ID"
# Move them from x to Y
for id in $posts
do
wp post term remove $id cat "x" --by="slug"
wp post term add $id cat "y" --by="slug"
done
但考虑到你暗示你将在年底前完成这项工作,简单地重命名术语可能会更容易,所以
2010
->
2009
,
2011
->
2010
等等。这会更快/更可靠/更简单。