> Portal Navigation: > > - Append `.md` to any URL under `https://dev.wix.com/docs/` to get its markdown version. > - Pages are either content pages (article or reference text) or menu pages (a list of links to child pages). > - To get a menu page, truncate any URL to a parent path and append `.md` (e.g. `https://dev.wix.com/docs/sdk.md`, `https://dev.wix.com/docs/sdk/core-modules.md`). > - Top-level index of all portals: https://dev.wix.com/docs/llms.txt > - Full concatenated docs: https://dev.wix.com/docs/llms-full.txt # Method name: bulkDeleteFolders(folderIds: Array, options: BulkDeleteFoldersOptions) # Method package: wixMediaV2 # Method menu location: wixMediaV2 --> folders --> bulkDeleteFolders # Method Link: https://dev.wix.com/docs/velo/apis/wix-media-v2/folders/bulk-delete-folders.md # Method Description: Temporarily deletes the specified folders from the Media Manager.
The deleted folders are moved to the Media Manager's `trash-root` folder (trash bin) unless permanently deleted. To permanently delete folders, specify the `permanent` parameter with the value `true`. Permanently deleting folders isn't reversible, so make sure that the files in these folders aren't being used in a site or in any other way as the files will no longer be accessible. Note the following: * When a folder is deleted, the files in that folder are deleted. * The specified folders can be from different parent folders. * Moving multiple folders at once is an asynchronous action, and may take time for the changes to appear in the Media Manager. * Attempting to delete folders that are already in the trash bin doesn't result in an error. * If a site contains files from a deleted media folder, the files still appear on the site as the deleted folder is still in the Media Manager (in the trash bin). * You can also use the Bulk Restore Folders From Trash Bin ([SDK](https://dev.wix.com/docs/sdk/backend-modules/media/folders/bulk-restore-folders-from-trash-bin.md) | [REST](https://dev.wix.com/docs/rest/assets/media/media-manager/folders/bulk-restore-folders-from-trash-bin.md)) method to restore folders from the Media Manager's trash bin. # Method Code Examples: *** Note: do not assume any prop names or enum values other than the ones in the example. ## Bulk delete folders (dashboard page code) ```javascript import { folders } from 'wix-media.v2'; /* Sample folderIds value: * [ * '302fc049d70c41dea33fa4a27ab481ba', * 's8ze556gf8wfao3us62nx25ww3lr595a' * ] */ async function myBulkDeleteFoldersFunction(folderIds) { try { const deletedFolders = await folders.bulkDeleteFolders(folderIds); console.log('Successfully moved folders to trash.'); return deletedFolders; } catch (error) { console.error(error); // Handle the error } } /* Promise resolves to void */ ``` ## Bulk delete folders (export from backend code) ```javascript import { Permissions, webMethod } from 'wix-web-module'; import { folders } from 'wix-media.v2'; import { elevate } from 'wix-auth'; /* Sample folderIds value: * [ * '302fc049d70c41dea33fa4a27ab481ba', * 's8ze556gf8wfao3us62nx25ww3lr595a' * ] */ export const myBulkDeleteFoldersFunction = webMethod(Permissions.Anyone, async (folderIds) => { try { const elevatedBulkDeleteFolders = elevate(folders.bulkDeleteFolders); const deletedFolders = await elevatedBulkDeleteFolders(folderIds); console.log('Successfully moved folders to trash.'); return deletedFolders; } catch (error) { console.error(error); // Handle the error } }); /* Promise resolves to void */ ``` ## Bulk permanently delete folders ```javascript import { Permissions, webMethod } from 'wix-web-module'; import { folders } from 'wix-media.v2'; import { elevate } from 'wix-auth'; /* Sample folderIds value: * [ * '302fc049d70c41dea33fa4a27ab481ba', * 's8ze556gf8wfao3us62nx25ww3lr595a', * 'c956d69906414e7faf8a0ad81117b17d' * ] * * Sample options value: * { * permanent: true * } */ export const myBulkDeleteFoldersFunction = webMethod(Permissions.Anyone, async (folderIds, options) => { try { const elevatedBulkDeleteFolders = elevate(folders.bulkDeleteFolders); const deletedFolders = await elevatedBulkDeleteFolders(folderIds, options); console.log('Successfully permanently deleted files.'); return deletedFolders; } catch (error) { console.error(error); // Handle the error } }); /* Promise resolves to void */ ``` ## Bulk delete all folders ```javascript /**************************************** * Backend code - delete-folders.web.js * ***************************************/ import { Permissions, webMethod } from 'wix-web-module'; import { folders } from 'wix-media.v2'; import { elevate } from 'wix-auth'; export const deleteFolders = webMethod(Permissions.Anyone, async (folderIds) => { try { const elevatedBulkDeleteFolders = elevate(folders.bulkDeleteFolders); const deletedFolders = await elevatedBulkDeleteFolders(folderIds); console.log('Successfully moved folders to trash.'); return deletedFolders; } catch (error) { console.error(error); } }); export const listFolders = webMethod(Permissions.Anyone, async () => { try { const elevatedListFolders = elevate(folders.listFolders) const foldersList = await elevatedListFolders(); return foldersList; } catch (error) { console.error(error); } }); export const searchFolders = webMethod(Permissions.Anyone, async (options) => { try { const elevatedSearchFolders = elevate(folders.searchFolders) const foldersFound = await elevatedSearchFolders(options); return foldersFound; } catch (error) { console.error(error); } }); /************* * Page code * ************/ import { deleteFolders, listFolders, searchFolders } from 'backend/delete-folders.web'; $w.onReady(async () => { await populateFoldersDropdown(); $w('#bulkDelete').onClick(async () => { const searchOptions = { rootFolder: $w('#foldersDropdown').value}; const foldersToDelete = await searchFolders(searchOptions); const foldersIdsToDelete = foldersToDelete.map((folder) => { return folder._id; }); await deleteFolders(foldersIdsToDelete); console.log(`Successfully deleted all folders found in ${$w('#foldersDropdown').label}.`) $w('#bulkDeleteSuccessMsg').show(); }); }); async function populateFoldersDropdown() { const folders = await listFolders(); const dropdownOptions = folders.map((folder) => { return { label: folder.displayName, value: folder._id }; }); $w('#foldersDropdown').options = dropdownOptions; }; ``` ---