Questa guida fornisce istruzioni su come eliminare in blocco tutti i topic allâinterno di una categoria su unâistanza di Discourse self-hosted.
Livello utente richiesto: Amministratore di sistema
Ă 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.
Questa è unâazione distruttiva. Assicurati di eseguire un backup del forum prima di procedere
Passaggi per eliminare i topic in una categoria
- Identifica lo slug della categoria: Ă il nome utilizzato nellâURL della categoria.
- Accedi al tuo server: Usa SSH per effettuare il login al server.
ssh username@your-server.com
- Vai alla directory di Discourse:
cd /var/discourse
- Entra nellâapplicazione Discourse:
./launcher enter app
- Esegui il comando di eliminazione: Sostituisci
"mycategory"con lo slug della tua categoria.
rake destroy:topics["mycategory"]
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
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: