Pasar al contenido principal

Cargando...

Eliminar todos los nodos de un tipo de contenido en Drupal 8

Eliminar todos los nodos de un tipo de contenido en Drupal 8

Eliminar todos los nodos de un tipo de contenido en Drupal 8

2 minutos

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]

 

Añadir nuevo comentario

Este campo no se mostrará públicamente.