SQL语句-批量删除自定义发布类型

时间:2013-07-16 作者:Mario Lorenzo

此网站列出了一种基于类别删除帖子的好方法

http://www.tripwiremagazine.com/2010/06/how-to-effectively-bulk-delete-many-posts-in-wordpress.html

相关代码为:

delete a,b,c,d
FROM wp_posts a
LEFT JOIN wp_term_relationships b ON ( a.ID = b.object_id )
LEFT JOIN wp_postmeta c ON ( a.ID = c.post_id )
LEFT JOIN wp_term_taxonomy d ON ( d.term_taxonomy_id = b.term_taxonomy_id )
LEFT JOIN wp_terms e ON ( e.term_id = d.term_id )
WHERE e.term_id =<category id>
在哪里<category id> 需要用相关编号替换。

我需要修改这段代码,以根据分类法批量删除自定义帖子类型。

通过按wordpress admin中的编辑按钮,我可以检索以下信息:

http://www.domain.com/wp-admin/edit-tags.php?action=edit&taxonomy=estate_agents&tag_ID=9098&post_type=os_estate
因此,我需要修改上面的SQL代码以采用:

post_type= os_estate
taxonomy= estate_agents
tag_ID= 9098
在此方面的任何帮助都将不胜感激。

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

相信你已经备份了wordpress数据库。不管怎样,正如文章所建议的,首先用select语句看看返回了哪些帖子是值得的:

SELECT DISTINCT ID, post_title, post_type, post_status, d.taxonomy, e.name
FROM wp_posts a
LEFT JOIN wp_term_relationships b ON ( a.ID = b.object_id )
LEFT JOIN wp_postmeta c ON ( a.ID = c.post_id )
LEFT JOIN wp_term_taxonomy d ON ( d.term_taxonomy_id = b.term_taxonomy_id )
LEFT JOIN wp_terms e ON ( e.term_id = d.term_id )
WHERE d.taxonomy = \'estate_agents\' AND a.post_type = \'os_estate\' AND e.term_id = 9098
然后,如果你高兴:

DELETE a,b,c
FROM wp_posts a
LEFT JOIN wp_term_relationships b ON ( a.ID = b.object_id )
LEFT JOIN wp_postmeta c ON ( a.ID = c.post_id )
LEFT JOIN wp_term_taxonomy d ON ( d.term_taxonomy_id = b.term_taxonomy_id )
LEFT JOIN wp_terms e ON ( e.term_id = d.term_id )
WHERE d.taxonomy = \'estate_agents\' AND a.post_type = \'os_estate\' AND e.term_id = 9098
指定DELETE a,b,c 表示仅删除wp\\U POST、wp\\U term\\U关系和wp\\U POSTETA表中的行;wp\\U term\\u分类法(d)和wp\\U terms(e)中的行将不会。

结束

相关推荐

如何在MySQL查询上为已有的自定义字段添加前缀?

我有一个问题,在插件更新后,我可以custom fields 在我们的目录网站上可搜索,但仅限于custom fields 获取前缀booking_ 对他们来说。现在有一些页面(已经有30个),每个页面都有几十个自定义字段。我想创建一个自定义字段,称为testfield 成为booking_testfield...因此,所有自定义字段都应具有前缀,但不应中断站点。我正在使用的主题框架将在进入页面时创建新的自定义字段,但那些带有前缀的新字段可以通过主题框架进行管理。