是否从分类中清除特定帖子ID的术语?

时间:2020-07-01 作者:contempoinc

尝试了解如何使用SQL/$wpdb->;查询以从分类中删除与特定帖子ID相关的所有术语。下面的内容很好地删除了特定分类法中的所有术语,但我需要对其进行修改,以便只删除与所提到的特定post id关联的术语。

// Clear Terms from Taxonomy \'post_tag\'
DELETE t, tr, tt
FROM wp_terms t  
INNER JOIN wp_term_taxonomy tt ON t.term_id = tt.term_id
INNER JOIN wp_term_relationships tr ON tt.term_taxonomy_id = tr.term_taxonomy_id
WHERE tt.taxonomy = \'post_tag\'
我还使用以下方法删除帖子(效果很好):

// Delete Posts 
$wpdb->query( "DELETE FROM $wpdb->posts WHERE ID IN (".implode( ", ", $postIds ).")" );
我尝试了以下操作,但没有清除关联的术语,它们只是在DB中保持孤立状态,只是清除了关系。

// Delete Post Terms
$wpdb->query( "DELETE FROM wp_term_relationships WHERE object_id IN (".implode( ", ", $postIds ).")" );
我是SQL的新手,非常感谢您的帮助,提前谢谢!

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

因此,如果您确定要删除实际术语以及将术语分配给帖子的关系,则可以这样做(已测试并适用于我):

delete term from wpterm_taxonomy term, wpterm_relationships rel 
where  term.term_taxonomy_id = rel.term_taxonomy_id and rel.object_id IN (1) ;
显然,用你选择帖子ID的方式来替换那里的“1”

我强烈建议您在运行之前进行测试,例如,此查询将显示在您执行此操作之前将删除哪些术语!并在进行大规模删除之前进行数据库备份,以防出错;-)

select term.term_taxonomy_id from wpterm_taxonomy term, wpterm_relationships rel 
where  term.term_taxonomy_id = rel.term_taxonomy_id and rel.object_id IN (1) ;
再次将“1”替换为创建帖子ID列表的方式

相关推荐

WordPress如何从不同服务器访问第二个MySQLi数据库

你好,我有一个旧网站https://www.manthanpublication.com/manthantest 使用Codeigniteras托管很难自定义,我决定现在改为Wordpress,问题是我在旧网站服务器上有学生成绩。我想在Wordpress网站上访问它们,我有旧网站上的PHP脚本可以在Wordpress上运行它们,但我不知道如何在Wordpress上获取或访问第二个MySQL数据库,这样我就可以在Wordpress网站上显示学生结果新网站https://manthanwelfarefound