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;
}
}
}
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.