Elimina in blocco tutti i topic in una categoria

:bookmark: Questa guida fornisce istruzioni su come eliminare in blocco tutti i topic all’interno di una categoria su un’istanza di Discourse self-hosted.

:person_raising_hand: Livello utente richiesto: Amministratore di sistema

:warning: È necessario l’accesso SSH al tuo server

La rimozione di tutti i topic da una categoria può essere necessaria per vari motivi, come riorganizzare i contenuti o cancellare discussioni obsolete. Questa guida ti accompagna passo dopo passo nelle operazioni per eseguire questa attività in sicurezza su un server Discourse self-hosted.

:warning: Questa è un’azione distruttiva. Assicurati di eseguire un backup del forum prima di procedere

Passaggi per eliminare i topic in una categoria

  1. Identifica lo slug della categoria: È il nome utilizzato nell’URL della categoria.
  2. Accedi al tuo server: Usa SSH per effettuare il login al server.
ssh username@your-server.com
  1. Vai alla directory di Discourse:
cd /var/discourse
  1. Entra nell’applicazione Discourse:
./launcher enter app
  1. Esegui il comando di eliminazione: Sostituisci "mycategory" con lo slug della tua categoria.
rake destroy:topics["mycategory"]

:information_source: Questo processo potrebbe richiedere del tempo a seconda del numero di topic.

Eliminazione dei topic nelle sottocategorie

Per eliminare i topic in una sottocategoria, includi lo slug della categoria genitore nel comando. Ad esempio:

rake destroy:topics["childcategory","parentcategory"]

Elimina tutti i topic in tutte le categorie

:warning: Questa azione cancellerĂ  tutti i topic da ogni categoria!

rake destroy:topics_all_categories

Domande frequenti

Per quanto tempo Discourse conserva i topic eliminati? Posso ancora accedere ai topic tramite link diretto.

I topic rimangono nel database dopo l’eliminazione. Solo il personale potrà ancora visualizzare i topic eliminati.

Come posso eliminare permanentemente i topic dal database?

Puoi eliminare permanentemente i post (e i relativi topic) dal database utilizzando il task rake destroy:posts. Questo richiede che l’impostazione del sito can_permanently_delete sia abilitata in precedenza. Vedi qui.

Passa gli ID dei post come elenco separato da virgole:

rake destroy:posts[4,8,15,16,23,42]

Puoi anche passare gli ID dei post da un file:

cat post_ids.txt | rake destroy:posts

È possibile limitare l’eliminazione dei topic a un periodo di tempo (tra due date)?

Dovrai eseguirlo dalla console di Rails; un comando simile al seguente dovrebbe funzionare:

 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

Come posso trovare lo slug o l’ID della mia categoria?

Il task destroy:topics utilizza lo slug della categoria (il nome nell’URL della categoria). Puoi elencare tutte le categorie con i loro ID e slug eseguendo:

rake categories:list

Informazioni aggiuntive

Per ulteriori informazioni su altre operazioni amministrative, consulta:

22 Mi Piace