我有8000多篇由wp-o-matic生成的帖子,我想把它们全部去掉。
我想在phpMyAdmin中执行此查询。我只是想确保这是安全的运行,它不会抹掉我的页面。以下是查询:
DELETE FROM \'wp_posts\' WHERE \'post_type\' = \'post\'
谢谢我有8000多篇由wp-o-matic生成的帖子,我想把它们全部去掉。
我想在phpMyAdmin中执行此查询。我只是想确保这是安全的运行,它不会抹掉我的页面。以下是查询:
DELETE FROM \'wp_posts\' WHERE \'post_type\' = \'post\'
谢谢连接并没有那么复杂,但我不想麻烦它。由于要删除的内容很多,因此直接SQL查询的运行速度将比WP快得多。
但是,我们确实需要跟踪post ID号,并删除子体和元数据。
未测试/备份/您的风险等。
create temporary table `cull` (`post` int);
insert into cull select ID from wp_posts where my_criteria = \'my value\';
delete from wp_posts where ID in ( select post from cull );
delete from wp_posts where post_parent in ( select post from cull );
-- done with temp table, cleanup metadata
delete from wp_postmeta where post_id not in ( select ID from wp_posts );
delete from wp_comments where comment_post_id not in ( select ID from wp_posts );
delete from wp_commentmeta where comment_id not in ( select comment_ID from wp_comments );
delete from wp_term_relationships where object_id not in ( select ID from wp_posts );
不要试图这样做SQL
. 有多个表的post信息。最终,孤立数据将分散在整个数据库中。虽然可以编写JOIN
您需要删除所有内容SQL
可能很复杂。
创建一个简单的循环use the Core to delete your posts.
$args = array(
\'post_type\' => \'post\',
\'ignore_sticky_posts\' => true,
);
$del = new WP_Query( $args );
while ($del->have_posts()) {
$del->the_post();
wp_delete_post( $post->ID, false );
}
将第二个参数设置为wp_delete_post()
到true
绕过“垃圾”,直接进入“永久、无可挽回的消失”。如果您知道要删除的ID的顺序(例如从12001到23006)和YOU ARE SURE(!) 没有要保留的帖子,在要删除的第一个/最后一个ID之间有和ID。
示例:一个插件(例如站点地图插件)生成了大量帖子,如果您知道应该删除ID 12001和23006之间的所有帖子,您可以运行:
DELETE FROM wp_postmeta WHERE post_id in (SELECT ID FROM wp_posts WHERE ID BETWEEN 12001 AND 23006);
DELETE FROM wp_posts where ID BETWEEN 12001 AND 23006;
在WP\\u Query的get\\u posts方法中,有一个部分与split\\u查询相关split\\u查询的逻辑是$split_the_query = ( $old_request == $this->request && \"$wpdb->posts.*\" == $fields && !empty( $limits ) && $q[\'posts_per_page\'] < 500 ); 可以总结为。如果:计算出的查询