Php 如何从WordPress数据库中删除大量帖子
在WordPress woocommerce网站上,我有一个自定义的帖子类型Php 如何从WordPress数据库中删除大量帖子,php,mysql,wordpress,Php,Mysql,Wordpress,在WordPress woocommerce网站上,我有一个自定义的帖子类型klaviyo\u shop\u cart==1137717个我不需要的帖子,所以我决定从我的数据库中删除它们。为了做到这一点,我尝试了几个插件,但由于限制,我未能删除它们 我的PHP方法只能处理3000次删除后,我不能增加这些数字。如果我增加它显示500错误 <?php $number = 3000 ; $mycustomposts = get_posts( array( 'p
klaviyo\u shop\u cart
==1137717个我不需要的帖子,所以我决定从我的数据库中删除它们。为了做到这一点,我尝试了几个插件,但由于限制,我未能删除它们
我的PHP方法只能处理3000次删除后,我不能增加这些数字。如果我增加它显示500错误
<?php
$number = 3000 ;
$mycustomposts = get_posts(
array(
'post_type' => 'klaviyo_shop_cart',
'numberposts' => $number
)
);
foreach( $mycustomposts as $mypost ) {
// Delete's each post.
wp_delete_post( $mypost->ID, true);
// Set to False if you want to send them to Trash.
}
echo '<h3 style=:"color:red;"> DELETED!</h3>' . $number ;
?>
这是我从你家找到的
大量的post可以一次删除50000个post delete上的批处理操作。没有人可以对MySQL服务器的功能说任何话。这是个奇怪的问题。什么是“限制”?如果您的服务器运行缓慢,这将需要很长时间才能完成。如果您可以只读锁定站点,您可以尝试拉下数据库,在更快的计算机上本地清理,然后上载清理结果。我的服务器是专用服务器,数据库太大,无法在本地完成。您的问题不清楚。您是否声明您有500篇自定义
post_类型的文章
,并且希望删除包含上述SQL语句的文章?或者,您正在请求帮助修改您发布的SQL语句,以便一次只删除500篇此类文章?至于性能,这完全取决于您的服务器,正如其他人在其他评论中指出的那样。@JustinR。我已经更新了我的问题
DELETE FROM wp_posts WHERE post_type='klaviyo_shop_cart';
DELETE FROM wp_postmeta WHERE post_id NOT IN (SELECT id FROM wp_posts);
DELETE FROM wp_term_relationships WHERE object_id NOT IN (SELECT id FROM wp_posts);