Diese Anleitung beschreibt, wie Sie alle Themen in einer Kategorie auf einer selbst gehosteten Discourse-Instanz in großen Mengen löschen.
Erforderliches Benutzerniveau: Systemadministrator
SSH-Zugriff auf Ihren Server ist erforderlich
Das Entfernen aller Themen aus einer Kategorie kann aus verschiedenen Gründen erforderlich sein, z. B. zur Neuorganisation von Inhalten oder zum Löschen veralteter Diskussionen. Diese Anleitung führt Sie durch die Schritte, um diese Aufgabe sicher auf einem selbst gehosteten Discourse-Server auszuführen.
Dies ist eine zerstörerische Aktion. Stellen Sie sicher, dass Sie ein Backup Ihres Forums erstellen, bevor Sie fortfahren.
Schritte zum Löschen von Themen in einer Kategorie
- Ermitteln Sie den Kategorie-Slug: Dies ist der Name, der in der URL der Kategorie verwendet wird.
- Greifen Sie auf Ihren Server zu: Melden Sie sich über SSH auf Ihrem Server an.
ssh benutzername@ihr-server.com
- Navigieren Sie zum Discourse-Verzeichnis:
cd /var/discourse
- Starten Sie die Discourse-Anwendung:
./launcher enter app
- Führen Sie den Löschbefehl aus: Ersetzen Sie
"mycategory"durch den Slug Ihrer Kategorie.
rake destroy:topics["mycategory"]
Dieser Vorgang kann je nach Anzahl der Themen einige Zeit in Anspruch nehmen.
Löschen von Themen in Unterkategorien
Um Themen in einer Unterkategorie zu löschen, fügen Sie den Slug der übergeordneten Kategorie in Ihren Befehl ein. Zum Beispiel:
rake destroy:topics["childcategory","parentcategory"]
Alle Themen in allen Kategorien löschen
Diese Aktion löscht alle Themen aus jeder Kategorie!
rake destroy:topics_all_categories
Häufig gestellte Fragen
Wie lange speichert Discourse gelöschte Themen? Ich kann immer noch über einen direkten Link auf Themen zugreifen.
Die Themen verbleiben nach dem Löschen in der Datenbank. Nur Mitarbeiter können gelöschte Themen weiterhin sehen.
Wie kann ich Themen dauerhaft aus der Datenbank löschen?
Sie können Beiträge (und deren Themen) dauerhaft aus der Datenbank löschen, indem Sie die destroy:posts rake-Aufgabe verwenden. Hierfür muss zunächst die versteckte Site-Einstellung can_permanently_delete aktiviert werden. Übergeben Sie die Beitrags-IDs als durch Kommas getrennte Liste:
rake destroy:posts[4,8,15,16,23,42]
Sie können auch Beitrags-IDs aus einer Datei weiterleiten:
cat post_ids.txt | rake destroy:posts
Ist es möglich, das Löschen von Themen auf einen Zeitraum (zwischen zwei Daten) zu beschränken?
Dies müssten Sie über die Rails-Konsole tun. Ein Befehl, der dem folgenden ähnelt, sollte funktionieren:
Topic.where("created_at.....").each do |t|
first_post = t.ordered_posts.first
PostDestroyer.new(Discourse.system_user, first_post).destroy if first_post
end
Wie finde ich den Slug oder die ID meiner Kategorie?
Die Aufgabe destroy:topics verwendet den Kategorieslug (der Name in der Kategorie-URL). Sie können alle Kategorien mit ihren IDs und Slugs auflisten, indem Sie Folgendes ausführen:
rake categories:list
Zusätzliche Informationen
Weitere Informationen zu anderen administrativen Vorgängen finden Sie unter: