يوفر هذا الدليل تعليمات حول كيفية حذف جميع المواضيع دفعة واحدة ضمن فئة معينة على نسخة Discourse مستضافة ذاتيًا.
مستوى المستخدم المطلوب: مسؤول النظام
مطلوب الوصول عبر SSH إلى الخادم الخاص بك
قد يكون حذف جميع المواضيع من فئة معينة ضروريًا لأسباب مختلفة، مثل إعادة تنظيم المحتوى أو مسح المناقشات القديمة. يشرح هذا الدليل الخطوات اللازمة لتنفيذ هذه المهمة بأمان على خادم Discourse مستضاف ذاتيًا.
هذا إجراء تدميري. تأكد من عمل نسخة احتياطية من المنتدى قبل المتابعة
خطوات حذف المواضيع في فئة معينة
- تحديد اسم الفئة (slug): هذا هو الاسم المستخدم في رابط الفئة.
- الوصول إلى الخادم: استخدم SSH لتسجيل الدخول إلى الخادم.
ssh username@your-server.com
- التنقل إلى مجلد Discourse:
cd /var/discourse
- الدخول إلى تطبيق Discourse:
./launcher enter app
- تنفيذ أمر الحذف: استبدل
"mycategory"باسم الفئة (slug) الخاص بك.
rake destroy:topics["mycategory"]
قد تستغرق هذه العملية وقتًا حسب عدد المواضيع.
حذف المواضيع في الفئات الفرعية
لحذف المواضيع في فئة فرعية، قم بتضمين اسم الفئة الأصلية (parent category slug) في الأمر. على سبيل المثال:
rake destroy:topics["childcategory","parentcategory"]
حذف جميع المواضيع في جميع الفئات
سيؤدي هذا الإجراء إلى مسح جميع المواضيع من كل فئة!
rake destroy:topics_all_categories
أسئلة شائعة
كم من الوقت يحتفظ Discourse بالمواضيع المحذوفة؟ لا يزال بإمكاني الوصول إلى المواضيع عبر رابط مباشر.
تظل المواضيع موجودة في قاعدة البيانات بعد الحذف. فقط الطاقم الإداري يمكنه رؤية المواضيع المحذوفة.
كيف يمكنني حذف المواضيع نهائيًا من قاعدة البيانات؟
يمكنك حذف المنشورات (ومواضيعها) نهائيًا من قاعدة البيانات باستخدام مهمة destroy:posts في Rake. يتطلب ذلك تفعيل إعداد الموقع can_permanently_delete أولاً. انظر هنا
مرر معرفات المنشورات (post IDs) كقائمة مفصولة بفواصل:
rake destroy:posts[4,8,15,16,23,42]
يمكنك أيضًا تمرير معرفات المنشورات من ملف:
cat post_ids.txt | rake destroy:posts
هل من الممكن تقييد حذف المواضيع لفترة زمنية محددة (بين تاريخين)؟
ستحتاج إلى القيام بذلك من خلال وحدة تحكم 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
كيف أجد اسم الفئة (slug) أو معرفها (ID)؟
تستخدم مهمة destroy:topics اسم الفئة (slug) (الاسم الموجود في رابط الفئة). يمكنك سرد جميع الفئات مع معرفاتها وأسمائها (slugs) بتشغيل الأمر التالي:
rake categories:list
معلومات إضافية
لمزيد من المعلومات حول عمليات إدارية أخرى، يرجى الاطلاع على: