Für Magento 2 kann folgendes Script verwendet werden um alle Bilder einer Webseite zu löschen.
Dabei werden nur die Einträge aus der Datenbank entfernt, aber keine Bilder auf der Festplatte gelöscht!
<?phpuse Magento\Framework\App\Bootstrap;use Magento\Catalog\Api\ProductRepositoryInterface;use Magento\Catalog\Model\Product\Gallery\Processor as GalleryProcessor;use Magento\Catalog\Model\ResourceModel\Product\CollectionFactory;use Magento\Store\Model\WebsiteRepository;require __DIR__ . '/app/bootstrap.php';$bootstrap = Bootstrap::create(BP, $_SERVER);$objectManager = $bootstrap->getObjectManager();$state = $objectManager->get(\Magento\Framework\App\State::class);$state->setAreaCode('adminhtml');/*** Anpassen:* Website-Code aus Stores > All Stores > Website Code*/$websiteCode = 'goebel';$websiteRepository = $objectManager->get(WebsiteRepository::class);$website = $websiteRepository->get($websiteCode);$websiteId = (int)$website->getId();$productCollectionFactory = $objectManager->get(CollectionFactory::class);$productRepository = $objectManager->get(ProductRepositoryInterface::class);$galleryProcessor = $objectManager->get(GalleryProcessor::class);$collection = $productCollectionFactory->create();$collection->addWebsiteFilter($websiteId);$collection->addAttributeToSelect(['sku', 'image', 'small_image', 'thumbnail', 'media_gallery']);$count = 0;$skipped = 0;foreach ($collection as $product) {$websiteIds = $product->getWebsiteIds();/*** Wichtig:* Produkte überspringen, die auch anderen Websites zugeordnet sind.*/if (count($websiteIds) > 1) {echo "SKIP {$product->getSku()} - Produkt ist mehreren Websites zugeordnet\n";$skipped++;continue;}$product = $productRepository->getById((int)$product->getId(), true, null, true);$mediaGalleryImages = $product->getMediaGalleryImages();if ($mediaGalleryImages) {foreach ($mediaGalleryImages as $image) {$galleryProcessor->removeImage($product, $image->getFile());echo "Remove image {$image->getFile()} from {$product->getSku()}\n";}}$product->setImage('no_selection');$product->setSmallImage('no_selection');$product->setThumbnail('no_selection');$productRepository->save($product);$count++;}echo "Fertig. Bearbeitet: {$count}, übersprungen: {$skipped}\n";
