Ce guide fournit des instructions sur la façon de supprimer en masse tous les sujets au sein d’une catégorie sur une instance Discourse auto-hébergée.
Niveau d’utilisateur requis : Administrateur système
L’accès SSH à votre serveur est requis
La suppression de tous les sujets d’une catégorie peut être nécessaire pour diverses raisons, telles que la réorganisation du contenu ou l’effacement de discussions obsolètes. Ce guide vous guide à travers les étapes pour accomplir cette tâche en toute sécurité sur un serveur Discourse auto-hébergé.
Ceci est une action destructive. Assurez-vous de sauvegarder votre forum avant de continuer
Étapes pour supprimer des sujets dans une catégorie
- Identifier le slug de la catégorie : C’est le nom utilisé dans l’URL de la catégorie.
- Accéder à votre serveur : Utilisez SSH pour vous connecter à votre serveur.
ssh username@your-server.com
- Naviguer vers le répertoire Discourse:
cd /var/discourse
- Entrer dans l’application Discourse:
./launcher enter app
- Exécuter la commande de suppression : Remplacez
\"mycategory\"par le slug de votre catégorie.
rake destroy:topics[\"mycategory\"]
Ce processus peut prendre du temps en fonction du nombre de sujets.
Suppression des sujets dans les sous-catégories
Pour supprimer les sujets dans 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 dans 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 avec un lien direct.
Les sujets restent dans la base de données après la suppression. Seul le personnel pourra toujours voir les sujets supprimés.
Comment puis-je supprimer définitivement les sujets de la base de données ?
Vous pouvez supprimer définitivement des messages (et leurs sujets) de la base de données en utilisant la tâche rake destroy:posts. Cela nécessite d’activer d’abord le paramètre de site masqué can_permanently_delete. Passez les identifiants de publication sous forme de liste séparée par des virgules :
rake destroy:posts[4,8,15,16,23,42]
Vous pouvez également rediriger les identifiants de publication à partir d’un fichier :
cat post_ids.txt | rake destroy:posts
Est-il possible de restreindre la suppression des sujets à une période (entre deux dates) ?
Vous devriez le faire à partir de 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 identifiants et slugs en exécutant :
rake categories:list
Informations supplémentaires
Pour plus d’informations sur d’autres opérations administratives, veuillez consulter :