J'ai un nœud de paragraphe qui semble être devenu voyou, car il existe (je l'ai trouvé en faisant une recherche à l'aide de l'API de recherche), mais il n'apparaît pas en tant que contenu, donc je ne peux pas le supprimer de l'interface utilisateur.
Comment puis-je le supprimer correctement?
Si vous n'avez pas peur de le faire par programme, vous pouvez utiliser ce code pour charger et supprimer le paragraphe:
$entity = \Drupal::entityTypeManager()->getStorage('paragraph')->load($paragraph_id);
if ($entity) $entity->delete();
Dans Drupal 8, vous pouvez toujours utiliser entity_delete_multiple()
, mais il est marqué comme obsolète et il va être supprimé de Drupal 9.
Il est facile de supprimer ces entités à l'aide de Drush, par exemple, avec le code suivant.
drush php-eval 'entity_delete_multiple("paragraph", [$id]);'
Même en utilisant du code qui fonctionne sur Drupal 9, vous supprimeriez ces entités sur une seule ligne de commande.
drush php-eval '$storage_handler = \Drupal::entityTypeManager()->getStorage($entity_type); $entities = $storage_handler->loadMultiple([$id]); $storage_handler->delete($entities);'
Remplacer $id
avec l'ID de l'entité que vous allez supprimer. Vous pouvez également supprimer plusieurs entités à la fois en remplaçant [$id]
avec un tableau d'ID.
Ceci est en fait causé par le bogue les entités de paragraphe supprimées ne sont pas supprimées de la base de données . Lorsque cela sera corrigé, ce problème cessera de s'aggraver (ballonnement de nos bases de données).
Pour supprimer toutes ces données qui ne sont plus pertinentes d'une manière standard propre, nous devons trouver une solution pour [META] Supprimer les entités composites obsolètes du stockage existant (collecte des ordures) .
Plutôt que de proposer des solutions de contournement comme suggéré dans d'autres réponses, des correctifs pour l'un (ou les deux) de ces problèmes résoudraient le problème de manière permanente.