wordpress:SQL通过post_title清除帖子、术语、关系、分类法(和其他关联)



我需要一个SQL来通过post_title清理我的wordpress数据库。

例如,下面查找wordpress中标题中包含单词"苹果"的所有帖子:

SELECT * FROM wp_posts WHERE post_title LIKE '%apples%';

这删除了同样的帖子:

DELETE FROM wp_posts WHERE post_title LIKE '%apples%';

然而,我不确定如何按标题删除其他表中的所有引用,因为我不知道它们与wp_posts表的关系。我认为你可以在删除包含"苹果"的帖子后,通过以下方式从postmeta中删除与帖子相关的行:

DELETE FROM wp_postmeta WHERE NOT EXISTS (SELECT * FROM wp_posts WHERE wp_postmeta.post_id = wp_posts.ID)

这应该是有效的,因为在最初的SQL命令之后,您现在在wp_postmeta中有了与wp_posts表没有关系的行,并删除了所述行。易于理解的

但我不确定如何删除类别和标记引用,因为我不确定wp_posts和wp_terms、wp_term_relationships或wp_term_taxonomy之间的关系(以及第一个查询可能影响的任何其他表)。

有人能帮我吗?

谢谢大家的考虑。

如果您的数据库支持级联,请使用它。您提出的DELETE SQL或类似的东西是最后一搏。持有联接数据的列名不共享名称是很常见的;其他表中没有tablename.post_id也不足为奇。

最新更新