我有超过2万页,需要删除除极少数以外的所有页面。从wp管理页面删除它们将花费太长时间和巨大的工作量。是否有可以在PhpMyAdmin中运行的命令来执行此任务?
假设我想保留ID为(1,2,3)的页面,并删除其余页面。
非常感谢。
我有超过2万页,需要删除除极少数以外的所有页面。从wp管理页面删除它们将花费太长时间和巨大的工作量。是否有可以在PhpMyAdmin中运行的命令来执行此任务?
假设我想保留ID为(1,2,3)的页面,并删除其余页面。
非常感谢。
你可以这样做
if (current_user_can(\'administrator\')) {
$pages = get_posts([
\'post_type\' => \'page\', // get only pages
\'posts_per_page\' => -1, // get all
\'post_status\' => array_keys(get_post_statuses()), // all post statuses (publish, draft, private etc...)
\'post__not_in\' => [8,18,15,16,17] // list of ids you want to exclude (pages not for deletion)
]);
foreach ($pages as $page) {
wp_delete_post($page->ID); // delete page (moves to trash)
}
}
如果您想在不使用wp-cli的情况下快速完成某些操作。当我需要快速一次性删除某些内容时,我有时会使用此选项。
您可以将此代码放入,header.php
(对于这个XD可能会被烧掉),然后进入你的站点,这个代码将只对管理员级别的用户执行。
它将检索您要删除的所有页面并将其删除。
在里面post__not_in => [pages_ids_here]
放置所有不想删除的页面ID。
wp_delete_post($page->ID)
将执行软删除,将其移动到垃圾箱,如果要永久删除页面,请使用此wp_delete_post($page->ID, true)
(不建议立即恢复,因为除非进行了DB备份,否则无法恢复它们)。
在运行此代码之前,请检查$pages包含的内容,以查看是否获得了正确的页面,一旦确定这些页面是正确的页面,就可以删除它们。
如果你能做一个DB备份以防出错。
删除所有页面后,立即删除此代码,以防止将来删除未连接的页面。
我发现先清空垃圾箱,然后清空我想保留的页面,然后通过wp cli永久删除所有页面更容易(使用--force标志跳过垃圾箱)
然后还原少数被丢弃的页面。希望这能帮助别人。在我网站上的数百篇帖子中,一个特定的字符串需要被另一个字符串替换,但这个替换只能在发布的帖子上执行,而不能在修订版上执行。我找到的插件(search&replace、better search replace等)没有此功能,因此必须使用phpMyAdmin完成这项工作。这可以通过此查询完成UPDATE `wp_posts` SET `post_content` = REPLACE(`post_content`, \'tobereplaced\', \'replacement\') WHERE po