Ich frage mich nur, ob Drush in der Lage ist, Knoten eines bestimmten Inhaltstyps zu löschen.
Etwas wie: $ drush delete-node --type=MyContentType
Wenn nicht möglich, kann ich eine solche Methode erstellen ?
Sie können eine Funktion wie folgt erstellen:
function MYMODULE_delete_all_the_things() {
$query = new EntityFieldQuery;
$result = $query->entityCondition('entity_type', 'node')
->propertyCondition('type', 'YOUR-CONTENT-TYPE')
->execute();
if (isset($result['node']) && count($result['node'])) {
$node_ids = array_keys($result['node']);
node_delete_multiple($node_ids);
}
}
Hinweis - Sie können auch eine einfache SELECT
Abfrage verwenden. Da Sie jedoch mit Entitäten arbeiten, erscheint es sinnvoller, EntityFieldQuery zu verwenden .
Dies sollte auch recht einfach zu ändern oder Argumente hinzuzufügen sein. Sie können es auch ganz einfach in einen Drush-Befehl einfügen. Ein Beispiel dafür finden Sie im Drush- Repository (siehe Abschnitt Befehle unten).
Installieren Sie das Entwicklungsmodul und löschen Sie mit drush alle Knoten.
Sie können auch eine Typoption angeben,
quelle
devel_generate
Modul ist in devel enthalten, muss jedoch indrush en devel_generate
genc aktiviert werden. Normalerweise wird es zum Erstellen von Knoten verwendet. Die 0 0 am Ende weist also darauf hin, dass nichts Neues erstellt werden soll, und der Befehl --kill, um das zu entfernen, was bereits vorhanden ist.Ich vermute, Sie können mit dem folgenden Befehl
BEARBEITEN: Ein Modul gefunden, das etwas mit der Frage zu tun hat
http://drupal.org/project/delete_all
Verwendung
Drush
drush delete-all
Beispiel:
drush delete-all article
quelle
delete_all
ist die Genc-Antwort ab Dezember 2016 noch nicht auf Drupal 8 portiert .So etwas würde funktionieren (ungetestet):
Dies findet alle Knoten mit dem Inhaltstyp
Annoucements
usingEntityFieldQuery()
. Es holt dann alles$nids
aus dem Ergebnis und löscht es mitnode_delete_multiple()
.Sie können diesen Code nehmen, in eine separate PHP-Datei schreiben und dann mit ausführen
drush scr
.Durch die Verwendung der API wird sichergestellt, dass alle richtigen Hooks ausgelöst werden. Unter anderem löschen sie auch die Knotenrevisionen und Felddaten (und ihre Revisionen), damit Sie keine verwaisten Daten in der Datenbank haben.
quelle
Zu diesem Thread gibt es einige gute Ideen. Wenn Sie nicht wirklich programmieren möchten und Drush verwenden möchten, sehen Sie sich das Modul Alle Beiträge löschen an:
quelle
VBO hat Drush-Integration. Erstellen Sie eine VBO-Ansicht von Knoten, führen Sie sie über Drush aus (mit
drush vbo-execute
) und übergeben Sie den Knotentyp als Argument.quelle
Drush 9
drush entity:delete node --bundle=my_content_type
quelle
Sie können auch ein Drush-Skript erstellen (sagen wir, es heißt "bulk_delete.php" und befindet sich im Drupal-Stammverzeichnis):
Dies ist der absolut schnellste Weg, dies zu tun: eine direkte Abfrage an die Datenbank unter Verwendung der Drupal-Funktion db_delete
Verwendung:
Doc: https://api.drupal.org/api/drupal/includes!database!database.inc/function/db_delete/7
Warnung: Durch diesen Vorgang werden die Daten ihrer Felder nicht gelöscht. Der gleiche Vorgang kann auf diese Felder angewendet werden (siehe Spalte "Bündel" jedes Felds). Beispielsweise:
Wobei "mycontenttype" derjenige ist, der in der ersten Abfrage verwendet wird.
quelle
'nid' > 5000
?Drupal 7
Versuchen Sie es mit dem folgenden Einzeiler, der alle MyContentType-Knoten aus Drupal entfernt:
Oder Sie können alle Entitäten basierend auf dem Entitätstypnamen (z. B. Knoten) entfernen:
Hinweis:
node
Ist der Name Ihres Entitätstyps, können Sie ihn bei Bedarf ändern.Wenn Sie Speicher- oder Zeitüberschreitungsfehler erhalten, können Sie die folgenden Sätze direkt vor dem hinzufügen
$res
:quelle
Um alle Knoten eines bestimmten Inhaltstyps zu löschen, können Sie versuchen, den folgenden Befehl über drush auszuführen:
Wobei MyContentType der Name Ihres Computer-Inhaltstyps ist (z. B. Seite).
quelle
Für einzelne Knoten:
quelle
Sie können verwenden
drush node_delete NID
um einen bestimmten Knoten zu löschen, aber wenn Sie alle Knoten nach Inhaltstyp löschen möchten, können Sie ein Drush-Plugin mit der Batch-API erstellen.quelle
Sie können dies auch mit dem Entwicklungsmodul tun, wie unter Kann ich Knoten eines bestimmten Inhaltstyps mit Drush löschen?
Installieren Sie das Entwicklungsmodul und löschen Sie mit drush alle Knoten.
$ drush genc --kill 0 0
Sie können auch eine Typoption angeben,
$ drush genc --kill --types = Artikel 0 0
quelle
Aktualisierung der Antwort von @kenorb.
In Drupal 8
quelle