このガイドでは、セルフホスト型Discourseインスタンスですべてのトピックをカテゴリ単位で一括削除する方法について説明します。
必要なユーザーレベル: システム管理者
サーバーへのSSHアクセスが必要です
カテゴリからすべてのトピックを削除する必要があるのは、コンテンツの再編成や古いディスカッションの消去など、さまざまな理由が考えられます。このガイドでは、セルフホスト型Discourseサーバーでこのタスクを安全に実行するための手順を説明します。
これは破壊的な操作です。続行する前にフォーラムのバックアップを必ず行ってください
カテゴリ内のトピックを削除する手順
- カテゴリのスラグを特定する: これは、カテゴリのURLで使用される名前です。
- サーバーにアクセスする: SSHを使用してサーバーにログインします。
ssh username@your-server.com
- Discourseディレクトリに移動する:
cd /var/discourse
- Discourseアプリケーションに入る:
./launcher enter app
- 削除コマンドを実行する:
\"mycategory\"をカテゴリのスラグに置き換えてください。
rake destroy:topics[\"mycategory\"]
このプロセスは、トピックの数によって時間がかかる場合があります。
サブカテゴリ内のトピックを削除する
サブカテゴリ内のトピックを削除するには、コマンドに親カテゴリのスラグを含めます。例えば:
rake destroy:topics[\"childcategory\",\"parentcategory\"]
すべてのカテゴリのすべてのトピックを削除する
この操作ですべてのカテゴリのすべてのトピックが消去されます!
rake destroy:topics_all_categories
よくある質問
Discourseは削除されたトピックをどれくらいの期間保持しますか?直接リンクでトピックにアクセスできます。
トピックは削除後もデータベースに残ります。スタッフのみが削除されたトピックを表示できます。
トピックをデータベースから完全に削除するにはどうすればよいですか?
destroy:posts rakeタスクを使用して、投稿(およびそれらのトピック)をデータベースから完全に削除できます。これには、まず非表示のサイト設定 can_permanently_delete を有効にする必要があります。投稿IDをコンマ区切りのリストとして渡します:
rake destroy:posts[4,8,15,16,23,42]
投稿IDをファイルからパイプすることもできます:
cat post_ids.txt | rake destroy:posts
トピックの削除を期間(2つの日付の間)に制限することは可能ですか?
これはRailsコンソールから行う必要があり、次のようなコマンドが機能するはずです:
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
カテゴリのスラグやIDを見つけるにはどうすればよいですか?
destroy:topics タスクはカテゴリのスラグ(カテゴリURL内の名前)を使用します。次のコマンドを実行することで、すべてのカテゴリとそのIDおよびスラグを一覧表示できます:
rake categories:list
追加情報
その他の管理操作の詳細については、次を参照してください: