我正在寻找一种安全快速的方法来删除所有自定义帖子类型的帖子。使用get_posts()
和wp_delete_post()
对于每个返回的岗位不起作用;由于涉及大量的数据库查询(超时错误),因此速度不够快。
最好是,我希望运行一个数据库查询,删除所有自定义帖子类型的帖子。有什么想法吗?
我正在寻找一种安全快速的方法来删除所有自定义帖子类型的帖子。使用get_posts()
和wp_delete_post()
对于每个返回的岗位不起作用;由于涉及大量的数据库查询(超时错误),因此速度不够快。
最好是,我希望运行一个数据库查询,删除所有自定义帖子类型的帖子。有什么想法吗?
您可以通过删除所有帖子$wpdb
DELETE FROM wp_posts WHERE post_type=\'post_type\';
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)
或者使用此查询将其替换为{您的CPT}}和您的自定义帖子类型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)
WHERE a.post_type = \'{{your CPT}}\';
您可以使用各种方法删除自定义帖子类型的所有帖子,但这里我将向您展示如何在不使用SQL查询的情况下执行此操作。例如,我们的帖子类型是product
$allposts= get_posts( array(\'post_type\'=>\'product\',\'numberposts\'=>-1) );
foreach ($allposts as $eachpost) {
wp_delete_post( $eachpost->ID, true );
}
现在可以用WordPress CLI 使用wp post delete. 安装CLI后,以下终端命令(位于站点的根目录中)将删除所有类型的帖子mycustomtype
:
wp post delete $(wp post list --post_type=\'mycustomtype\' --format=ids)
我的网站受到攻击,所以基本上所有的核心php文件都已损坏。只剩下数据库。现在我在本地主机中进行了尝试。如果我想从这个数据库恢复我的站点,域名是我唯一需要替换字符串的东西吗</我找到了这个教程-Replace string in database - 更改所有表中的域字符串,但几乎不知道将其放入何处以及如何在wordpress中触发它