このガイドでは、セルフホスト型の 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
追加情報
他の管理操作に関する詳細については、以下をご覧ください: