Mam kilka tysięcy węzłów określonego typu treści. Korzystając z interfejsu internetowego (example.com/admin/content), mogę usunąć tylko około 50 naraz. Jak mogę je szybko usunąć?
31
Jest na to moduł (TM).
Zobacz Usuwanie zbiorcze .
Spowoduje to użycie interfejsu API usługi Batch do usunięcia węzłów, aby uniknąć problemów z przekroczeniem limitu czasu lub pamięci podczas usuwania tysięcy węzłów za pomocą jednego wywołania metody node_delete_multiple ().
Usuwanie zbiorcze to opuszczony moduł. Zobacz alternatywy:
Patrząc na moduł Devel Generate w poszukiwaniu inspiracji, oto jego funkcja „zabijania zawartości”
devel_generate_content_kill
:Więc spróbowałbym albo użyć Devel Generate, aby usunąć wszystkie węzły, ale nie utworzyć nowych, lub użyć example.com/devel/php, aby zadzwonić
devel_generate_content_kill(array('node_types' => array('my_node_type')));
bezpośrednio.źródło
W Drupal 8 jednym ze sposobów jest użycie metody entityQuery () z metodą EntityStorageInterface :: delete () :
Jeśli chcesz zastosować inne filtry / warunki, możesz sprawdzić stronę interfejsu QueryInterface
EDYCJA (w inny sposób, dzięki @ 4k4 ):
Jeśli chcesz przetestować kod, możesz użyć:
Spowoduje to usunięcie wszystkich artykułów.
źródło
$entities = $storage_handler->loadByProperties(['type' => 'YOUR_CONTENT_TYPE_NAME']);
entityQuery
, powinieneś ustawićaccessCheck
na wyciągu. W przeciwnym razie, jeśli uruchomisz go w trybie Drush, domyślnie accessCheck jest ustawiony na true, a wszystkie węzły, do których UID 0 nie ma dostępu, nie zostaną zwrócone.Jeśli chcesz to zrobić wyłącznie za pomocą interfejsu użytkownika, możesz użyć modułu devel_generate.
W ten sposób nie zostaną wygenerowane żadne węzły, a wszystkie węzły wybranych typów zostaną usunięte.
źródło
Utwórz plik z poniższym kodem w katalogu głównym instalacji drupal i uruchom plik.
źródło
Możesz to zrobić w Drupal 7 za pomocą części Wykonaj kod PHP modułu Devel, wprowadzając:
źródło
Zrób to w terminalu, jeśli używasz Drush i usuń wszystkie moduły:
źródło
Widoki Operacje masowe udostępniają konfigurowalny ekran administratora węzła z funkcją BatchAPI, który umożliwia filtrowanie według typu, wybór wszystkich węzłów pasujących do kryteriów wyszukiwania itp.
To moje praktyczne rozwiązanie w Drupal 6 - oprócz usuwania wsadowego możesz edytować zbiorczo węzły i robić wiele innych rzeczy.
Wygląda na to, że wersja Drupal 7 nie jest jeszcze gotowa - ale oglądałbym ten moduł dla wydania D7.
źródło
Kolejny fragment to:
gdzie
TO_BE_DELETED
jest typ zawartości do usunięcia.źródło
db_delete('node')
Z modułem Devel, używając drush:
Lub w interfejsie użytkownika, jak wyjaśniono tutaj: http://befused.com/drupal/delete-nodes-devel
źródło
devel_generate
, który należy włączyć. A dla wielu typów todrush genc 0 --kill --types="article, page"
Używam Usuń cały moduł, działa dobrze z D8 i zapewnia bardzo przydatne polecenia drush. Na przykład, aby usunąć całą
article
zawartość typu zawartości:źródło
Możesz spróbować usunąć wszystko moduły, przejść do „admin / content / delete_content”, a pojawi się formularz usuwania treści należących do niektórych typów treści.
pozdrowienia
źródło
Jeśli masz włączony moduł migracji, możesz użyć:
Zobacz Typowe polecenia migracji przy użyciu Drush .
źródło
Ten moduł służy do usuwania całej zawartości i / lub użytkowników z witryny. Jest to głównie narzędzie programistyczne, które może się przydać w kilku przypadkach
https://www.drupal.org/project/delete_all
podobnie jak moduł Usuwanie zbiorcze usunie wszystkie węzły określonego typu węzła za pomocą interfejsu API wsadowego. Zaleca się używanie modułu Views Batch Operations (VBO) dla niewielkiej liczby węzłów. Ale jeśli musisz usunąć 10.000 węzłów, ten moduł może być lepszą opcją.
https://www.drupal.org/project/bulkdelete
źródło
Programowo usuń wszystkie węzły typu zawartości tutaj jest funkcja pomocnika:
źródło
Skończyło się na użyciu db_delete , nie wymaga modułów:
Edytuj / Ostrzeżenie: Zobacz komentarz Berdira poniżej. Ta metoda nie usuwa wszystkich danych związanych z węzłami.
źródło
Jeśli nie chcesz kodować, możesz wypróbować ten moduł, https://drupal.org/project/total_control
Przejdź do Pulpitu nawigacyjnego -> Treść, zaznacz całą zawartość (możesz filtrować według typu zawartości), a następnie wybierz „Usuń element”
źródło