你可以这样做
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备份以防出错。
删除所有页面后,立即删除此代码,以防止将来删除未连接的页面。