Saltar al contenido

Como borrar o eliminar todas las categorías en Magento 2

Magento 2

Despues de probar y probar las soluciones para borrar y eliminar las categorías de Magento 2 desde SQL , que no han funcionado bien nunca y que están desaconsejadas por Magento al final me decanté por buscar un pequeño script que lo haga desde el propio Magento.

Este es el que mejor me ha funcionado y lo utilizo habitualmente para eliminar las categorías y probar después las cargas automáticas de productos y categorías (importando las categorías con otro script).



Script para borrar / eliminar las categorias en Magento 2

deleteCategory.php

<?php
use Magento\Framework\App\Bootstrap;
include('app/bootstrap.php');
$bootstrap = Bootstrap::create(BP, $_SERVER);
 
$objectManager = Magento\Framework\App\ObjectManager::getInstance();
deleteAllCategories($objectManager);
 
function deleteAllCategories($objectManager) {
    
    $categoryFactory = $objectManager->get('Magento\Catalog\Model\CategoryFactory');
    $newCategory = $categoryFactory->create();
    $collection = $newCategory->getCollection();
    $objectManager->get('Magento\Framework\Registry')->register('isSecureArea', true);
 
    foreach($collection as $category) {
        
        $category_id = $category->getId();
        
        if( $category_id <= 2 ) continue;
        
        try {
            $category->delete();
            echo 'Category Removed '.$category_id .PHP_EOL;
        } catch (Exception $e) {
            echo 'Failed to remove category '.$category_id .PHP_EOL;
            echo $e->getMessage() . "\n" .PHP_EOL;
        }
    }
    
}  
Magento 2

Para utilizarlo solo tienes que añirlo a tu directorio principal y ejecutar la url con el nombre del fichero.

tudominio.com/deleteCategory.php

Y listo, si tienes muchas pues tardará unos minutillos. yo tengo unas 900 y puede tardar unos 2-3 minutos , depende de tu server.