wordpress mysql - 删除所有自定义帖子类型
问题描述:
我已经设置了使用'自定义帖子类型'的wordpress/mysql,它目前在数据库的wp_posts表中保存了约40,000行数据。我试图处理一个SQL查询,它将一次去除某个自定义帖子类型的所有行,但它一直告诉我我有一个语法错误。我使用的代码如下,如果它很简单,但是SQL对我来说是陌生的,我很难在论坛中找到任何东西。wordpress mysql - 删除所有自定义帖子类型
DELETE FROM `wp_posts`
WHERE `post_type` = 'prefix-numberplates'
LIMIT 0 , 3000
有`各地wp_posts & post_type但它不会让我他们的风格就在这里。 任何帮助,不胜感激。
答
解决 -
DELETE FROM `wp_posts`
WHERE `post_type` = 'prefix-numberplates'
工作 - 把底部出来&感觉不错。
+15
您不会通过运行此查询来移除后期元,您将在数据库中留下大量垃圾。 – 2014-03-25 11:26:06
答
尝试使用$ wpdb类。
$query = "
DELETE FROM wp_posts
WHERE post_type = 'prefix-numberplates'
LIMIT 0, 3000
";
$wpdb->query($query);
答
这样可以确保得到正确的表 - WPDB $最了解:)
// delete CPT posts ##
global $wpdb;
$posts_table = $wpdb->posts;
$query = "
DELETE FROM {$posts_table}
WHERE post_type = 'post_type_name'
";
$wpdb->query($query);
答
global $wpdb;
// delete all posts by post type.
$sql = 'DELETE `posts`, `pm`
FROM `' . $wpdb->prefix . 'posts` AS `posts`
LEFT JOIN `' . $wpdb->prefix . 'postmeta` AS `pm` ON `pm`.`post_id` = `posts`.`ID`
WHERE `posts`.`post_type` = \'prefix-numberplates\'';
$result = $wpdb->query($sql);
这将从两个职位和postmeta表中删除。它没有在db中留下垃圾。
答
delete p,m from wp_posts p left join wp_postmeta m on p.ID = m.post_id where p.post_type = "my_custom_post_type"
答
下从帖子,postmeta删除并term_relationships表:
DELETE p,tr,pm
FROM wp_posts p
LEFT JOIN wp_term_relationships tr
ON (p.ID = tr.object_id)
LEFT JOIN wp_postmeta pm
ON (p.ID = pm.post_id)
WHERE p.post_type = 'post_type_name';
只是改变 'post_type_name' 你要删除的CPT。 在适当的位置还要更改表名前缀。
查询看起来很好。你的错误信息是什么?如果您是从命令行执行此操作,您是否首先使用? –
Rob
2012-07-21 02:31:21