1

I would like to "prune" my attribute sets. That is - I would like to delete all attribute sets that have been setup, but that do not have any products in that attribute set.

Is there a way - some script that has been developed that will identify unused attribute sets? That is no products in the database that use those attribute sets?

Please advise.

  • can you share your script? – Abdul Nov 16 '15 at 4:34
2

Try below script

        $entityType = Mage::getModel('catalog/product')->getResource()->getEntityType();
        $collection = Mage::getResourceModel('eav/entity_attribute_set_collection')
            ->setEntityTypeFilter($entityType->getId());

        foreach ($collection as $attributeSet) {
            if($attributeSetId = $attributeSet->getId()) {

                /** @var $catalogProductsCollection Mage_Catalog_Model_Resource_Eav_Mysql4_Product_Collection */
                $catalogProductsCollection = Mage::getModel('catalog/product')->getCollection()
                            ->addFieldToFilter('attribute_set_id', $attributeSetId);
                if (count($catalogProductsCollection) == 0 ) {
                    $attributeSet = Mage::getModel('eav/entity_attribute_set')->load($attributeSetId);
                    try {
                        $attributeSet->delete();
                    } catch (Exception $e) {
                        echo $e->getMessage();
                    }
                }
            }
        }

Note : first backup your database after run script

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.