Czy istnieje sposób na usunięcie wielu produktów poprzez filtrowanie za pomocą SKU? Mam około 1000 produktów, które chcę usunąć.
12
Najszybszym sposobem na to jest bezpośrednie uruchomienie tego zapytania.
DELETE FROM `catalog_product_entity` WHERE `sku` IN ('SKU1', 'SKU2', ...., 'SKU1000');
Wszystko powinno ładnie się kaskadować. wartości atrybutów zostaną usunięte, relacje kategorii zostaną usunięte, upsells, crosssells i powiązane i tak dalej.
[EDYCJA]
Jest w tym pewien haczyk. Dzięki STW za zauważenie tego. Recenzje i oceny pozostaną sierotami, ponieważ nie ma dla nich klucza obcego do tabeli produktów.
->delete()
ale uniknie kodu wykrywającego zdarzenia. Na magazynie Magento wydaje się, że recenzje i oceny zostaną osierocone (nie zostaną usunięte, gdy powiązany jest z nimi produkt).catalog_product_entity_*
tabele mają FK naentity_id
polu docatalog_product_entity.entity_id
pola. Powinny ładnie kaskadować.Z całym szacunkiem dla Mariusa, ale proszę nie wchodzić w bezpośrednią interakcję z bazą danych, jeśli można jej w ogóle uniknąć. Być może powiązane tabele zostaną zaktualizowane automatycznie, jeśli Twoja wersja Magento i wszystkie rozszerzenia są wolne od błędów we właściwych miejscach. Ale jeśli nie są, takie rzeczy mogą zniszczyć Twoją witrynę.
Zamiast tego możesz użyć funkcji importu CSV Magento.
Po prostu wypisz swoje SKU w pliku, tak proste jak:
...itp. Następnie zapisz jako plik CSV.
Następnie w System> Import / Export> Import wybierz Typ jednostki: Produkty i Zachowanie importu: Usuń jednostki i zaimportuj ten plik. I to wszystko!
źródło
Mage_ImportExport_Model_Import_Entity_Product::_deleteProducts()
)Możesz to zrobić programowo. Utwórz skustodelete.csv z listą wszystkich skusów do usunięcia, a następnie oto kod, aby przejść dalej
źródło
Brak kodu
W sekcji administracyjnej poniżej
Manage Products
znajdziesz siatkę ze wszystkimi Twoimi produktami. Istnieje kolumna o nazwieSKU
. Tutaj możesz filtrować swoje produkty według wartości.Następnie po przefiltrowaniu według SKU możesz użyć pól wyboru po lewej stronie, aby wybrać wszystkie elementy, które chcesz usunąć.
Zauważ,
select all
który wybierze wszystkie elementy w całej siatce, aselect visible
który wybierze tylko elementy na bieżącej stronie siatki.Po wybraniu elementów, które chcesz, możesz użyć przycisku akcji masowej w prawym górnym rogu siatki i wybrać opcję usuwania.
Spowoduje to wyświetlenie monitu o upewnienie się, że chcesz usunąć te elementy. Po wybraniu opcji Tak dla tego wyskakującego okienka rozpocznie się usuwanie elementów. W zależności od ustawień indeksu po tym procesie może być konieczne ponowne zaindeksowanie.
źródło
Kevin S, możesz usunąć produkt według pliku csv. Postępuj zgodnie z krokiem kłębka
Krok 1 :
Utwórz plik csv i wklej skus, który chcesz usunąć z systemu. Podaj nazwę pliku jako skus.csv
Krok 2 :
Utwórz i zamień plik php w katalogu głównym. Następnie wklej następujący kod
Uwaga: przed uruchomieniem tego kodu zaleciłem Ci wykonanie kopii zapasowej. Mam nadzieję, że to ci pomoże.
źródło
Ponieważ listy tabel
są kluczami obcymi katalogu_produktu_produktu.
Więc kiedy usuniesz rekord w katalogu katalog_produktu, niektóre rekordy powyższych tabel również zostaną usunięte.
Kod (zaimplementuj odpowiedź Mariusa) usuń wszystkie produkty, które mają identyfikator podmiotu <= 18069:
źródło