Jawaban:
Cara tercepat untuk melakukannya adalah dengan menjalankan kueri ini secara langsung.
DELETE FROM `catalog_product_entity` WHERE `sku` IN ('SKU1', 'SKU2', ...., 'SKU1000');
Semuanya harus mengalir dengan baik. nilai atribut akan dihapus, relasi kategori akan dihapus, upsells, crosssell dan terkait dan seterusnya.
[EDIT]
Ada kaitannya dengan ini. Terima kasih kepada STW untuk mengetahui hal ini. Ulasan dan peringkat akan tetap yatim karena tidak ada kunci asing ke tabel produk untuk mereka.
->delete()
tetapi akan menghindari kode mendengarkan acara. Dalam persediaan Magento, tampaknya ulasan dan peringkat akan menjadi yatim (mereka tidak akan dihapus saat produk terkaitnya).
catalog_product_entity_*
tabel memiliki FK di entity_id
lapangan ke catalog_product_entity.entity_id
lapangan. Mereka harus mengalir dengan baik.
Semua hormat kepada Marius, tapi tolong jangan berinteraksi dengan database secara langsung jika itu bisa dihindari. Mungkin tabel terkait akan diperbarui secara otomatis, jika rilis Magento dan semua ekstensi Anda bebas bug di semua tempat yang tepat. Tetapi jika tidak, hal semacam itu dapat menghancurkan situs Anda.
Sebagai gantinya, Anda dapat menggunakan fitur impor CSV Magento sendiri.
Cukup daftarkan SKU Anda dalam file, sesederhana:
sku
ABC1
ABC2
ABC3
... dll. Kemudian simpan sebagai file CSV.
Kemudian, di Sistem> Impor / Ekspor> Impor, pilih Jenis Entitas: Produk dan Perilaku Impor: Hapus Entitas, dan impor file ini. Dan itu dia!
Mage_ImportExport_Model_Import_Entity_Product::_deleteProducts()
)
Anda dapat melakukannya secara terprogram. Buat skustodelete.csv daftar semua skus untuk dihapus dan setelah itu di sini adalah kode untuk melanjutkan
require_once 'app/Mage.php';
Mage :: app("default")->setCurrentStore(Mage_Core_Model_App :: ADMIN_STORE_ID);
$skuAll = array();
$file_handle = fopen("skustodelete.csv", "r");
$catalog = Mage::getModel('catalog/product');
while (!feof($file_handle)) {
$line_of_text = fgetcsv($file_handle, 1024);
$allSku = $line_of_text[0];
$product = $catalog->loadByAttribute('sku', $allSku);
try {
$product->delete();
echo "Product with ID: " . $product->getId() . " Deleted Successfully". PHP_EOL;
} catch (Exception $e) {
echo "Product with ID: " . $product->getId() . "cannot be deleted" . PHP_EOL;
}
}
echo "Finish Delete";
Cara tidak ada kode
Di bagian admin di bawah Manage Products
akan ditemukan kotak dengan semua produk Anda. Ada kolom yang disebut SKU
. Di sini Anda dapat memfilter produk Anda berdasarkan nilainya.
Kemudian setelah Anda memfilter berdasarkan SKU Anda dapat menggunakan kotak centang di sebelah kiri untuk memilih semua item yang ingin Anda hapus.
Perhatikan select all
item mana yang akan memilih semua item dalam kisi lengkap dan select visible
yang hanya akan memilih item pada halaman kisi saat ini.
Setelah memilih item yang diinginkan, Anda dapat menggunakan tombol aksi massal di sisi kanan atas kisi dan pilih opsi hapus.
Ini akan meminta Anda untuk memastikan Anda yakin ingin menghapus item-item ini. Setelah memilih ya untuk pop-up ini akan melanjutkan untuk menghapus item Anda. Bergantung pada pengaturan indeks Anda, Anda mungkin harus menjalankan indeks ulang setelah proses ini.
Kevin S, Anda dapat menghapus produk dengan file csv. Cukup ikuti langkah mengepul
Langkah 1 :
Buat file csv dan lewati skus yang ingin Anda hapus dari sistem. Beri nama file sebagai skus.csv
Langkah 2 :
Buat & ganti file php di direktori root Anda. Lalu, lewati kode berikut
require_once '../app/Mage.php';
Mage :: app("default") -> setCurrentStore( Mage_Core_Model_App :: ADMIN_STORE_ID );
$skuAll =array();
$file_handle = fopen("skus.csv", "r");
while (!feof($file_handle) ) {
$line_of_text = fgetcsv($file_handle, 1024);
$allSku = $line_of_text[0];
}
$products = Mage::getResourceModel('catalog/product_collection')
->addAttributeToSelect('*')
->addAttributeToFilter(
'sku', array('in' => $allSku)
)
->load();
if(is_array($products))
{
foreach ($products as $key => $pId)
{
try
{
$product = Mage::getModel('catalog/product')->load($pId)->delete();
echo "successfully deleted product with ID: ". $pId ."<br />";
}
catch (Exception $e)
{
echo "Could not delete product with ID: ". $pId ."<br />";
}
}
}
Catatan: Saya merekomendasikan kepada Anda sebelum menjalankan kode ini Anda harus mendapatkan cadangan. Saya harap ini akan membantu Anda.
Karena daftar tabel
adalah kunci asing dari catalog_product_entity.
Jadi ketika menghapus catatan di catalog_product_entity, beberapa catatan dari tabel di atas juga akan dihapus.
Kode (menerapkan jawaban Marius) hapus semua produk yang memiliki entitas_id <= 18069:
$adapter = $setup->getConnection("catalog_write");
$where = array(
'entity_id <= ?' => '18069'
);
$tableCatalogProduct = Mage::getModel("catalog/product")->getResource()->getEntityTable();
$adapter->delete($tableCatalogProduct, $where);
$tableRating = Mage::getModel("rating/rating")->getResource()->getMainTable();
$adapter->delete($tableRating, $where);
$tableRating = Mage::getModel("review/review")->getResource()->getMainTable();
$adapter->delete($tableRating, $where);