Ce guide fournit des instructions sur la manière de supprimer en masse tous les sujets d’une catégorie sur une instance Discourse auto-hébergée.
Niveau utilisateur requis : Administrateur système
L’accès SSH à votre serveur est requis
Supprimer tous les sujets d’une catégorie peut être nécessaire pour diverses raisons, telles que la réorganisation du contenu ou le nettoyage des discussions obsolètes. Ce guide vous accompagne dans les étapes permettant d’accomplir cette tâche en toute sécurité sur un serveur Discourse auto-hébergé.
Il s’agit d’une action destructrice. Assurez-vous de sauvegarder votre forum avant de continuer
Étapes pour supprimer les sujets d’une catégorie
- Identifiez le slug de la catégorie : Il s’agit du nom utilisé dans l’URL de la catégorie.
- Accédez à votre serveur : Utilisez SSH pour vous connecter à votre serveur.
ssh username@your-server.com
- Accédez au répertoire Discourse :
cd /var/discourse
- Entrez dans l’application Discourse :
./launcher enter app
- Exécutez la commande de suppression : Remplacez
"mycategory"par le slug de votre catégorie.
rake destroy:topics["mycategory"]
Ce processus peut prendre du temps selon le nombre de sujets.
Supprimer les sujets dans les sous-catégories
Pour supprimer les sujets d’une sous-catégorie, incluez le slug de la catégorie parente dans votre commande. Par exemple :
rake destroy:topics["childcategory","parentcategory"]
Supprimer tous les sujets de toutes les catégories
Cette action effacera tous les sujets de chaque catégorie !
rake destroy:topics_all_categories
Questions fréquentes
Combien de temps Discourse conserve-t-il les sujets supprimés ? Je peux toujours accéder aux sujets via un lien direct.
Les sujets restent dans la base de données après suppression. Seul le personnel pourra toujours voir les sujets supprimés.
Comment supprimer définitivement les sujets de la base de données ?
Vous pouvez supprimer définitivement les messages (et leurs sujets) de la base de données en utilisant la tâche rake destroy:posts. Cela nécessite que le paramètre du site can_permanently_delete soit activé au préalable. Lien vers le paramètre
Passez les IDs des messages sous forme de liste séparée par des virgules :
rake destroy:posts[4,8,15,16,23,42]
Vous pouvez également transmettre les IDs des messages depuis un fichier :
cat post_ids.txt | rake destroy:posts
Est-il possible de restreindre la suppression des sujets à une période donnée (entre deux dates) ?
Vous devrez le faire depuis la console Rails ; une commande similaire à la suivante devrait fonctionner :
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
Comment trouver le slug ou l’ID de ma catégorie ?
La tâche destroy:topics utilise le slug de la catégorie (le nom dans l’URL de la catégorie). Vous pouvez lister toutes les catégories avec leurs IDs et slugs en exécutant :
rake categories:list
Informations supplémentaires
Pour plus d’informations sur d’autres opérations administratives, veuillez consulter :