Eliminar todos los nodos de un tipo de contenido en Drupal 8
Lo reconozco, en muchas ocasiones he tenido que eliminar cientos de nodos tras una importación fallida o simplemente los creados durante el desarrollo de la web.
Cuando se trata de unos pocos contenidos existen módulos como Views Bulk Operations o Delete All que me son de ayuda, pero otras veces me resulta mucho más cómodo usar un script PHP y ejecutarlo gracias a Devel PHP.
Eliminar nodos (método 1)
$result = \Drupal::entityQuery("node")
->condition("type", "YOUR_CONTENT_TYPE_NAME")
->accessCheck(FALSE)
->execute();
$storage_handler = \Drupal::entityTypeManager()->getStorage("node");
$entities = $storage_handler->loadMultiple($result);
$storage_handler->delete($entities);
Gracias a este código puedo eliminar de forma rápida y sencilla todos los nodos de un tipo de contenido concreto. Simplemente debo sustituir "YOUR_CONTENT_TYPE_NAME" por el nombre de máquina del tipo de contenido (por ejemplo: article).
Con este código obtengo todos los nodos de un tipo de contenido y luego los elimino en masa.
Eliminar nodos (método 2)
$storage_handler = \Drupal::entityTypeManager()->getStorage("node");
$entities = $storage_handler->loadByProperties([
"type" => "YOUR_CONTENT_TYPE_NAME",
]);
$storage_handler->delete($entities);
La misma filosofía que en el método anterior pero en tan sólo tres líneas de código. Muy útil para usar con Ctrl+C y Ctrl+V.
Eliminar a través de Drush
Si te sientes más cómodo usando la terminal de tu servidor, puedes instalar Delete All y acudir al comando drush:
drush delete-all [YOUR_CONTENT_TYPE_NAME]
INFO: El contenido del artículo se adhiere a nuestros principios de ética editorial. Para notificar un error visita nuestro formulario de contacto.