Supprimer en masse tous les sujets d'une catégorie

:bookmark: 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.

:person_raising_hand: Niveau utilisateur requis : Administrateur système

:warning: 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é.

:warning: 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

  1. Identifiez le slug de la catégorie : Il s’agit du nom utilisé dans l’URL de la catégorie.
  2. Accédez à votre serveur : Utilisez SSH pour vous connecter à votre serveur.
ssh username@your-server.com
  1. Accédez au répertoire Discourse :
cd /var/discourse
  1. Entrez dans l’application Discourse :
./launcher enter app
  1. Exécutez la commande de suppression : Remplacez "mycategory" par le slug de votre catégorie.
rake destroy:topics["mycategory"]

:information_source: 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

:warning: 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 :

22 « J'aime »