لقد نقلت تثبيت Discourse مؤخرًا إلى مجلد فرعي. بعد القيام بذلك، توقف زر “عرض المشاركة الكاملة” عن العمل - تنقر لتوسيع المحتوى، لكنه لا يقوم بتحميل المشاركة الكاملة.
هذا غير ذي صلة، هذا المسار يستجيب فقط بنوع محتوى application/json. يُرجع https://tecnoblog.net/comunidade/posts/483289/expand-embed.json
"\"\u003cdiv\u003e\u003cdiv\u003e\u003c/div\u003e\u003c/div\u003e\\n\u003chr\u003e\\n\u003csmall\u003eEste é um tópico de discussão auxiliar para a entrada original em \u003ca href='https://tecnoblog.net/noticias/paramount-oferece-us-108-bilhoes-em-dinheiro-para-tomar-warner-da-netflix'\u003ehttps://tecnoblog.net/noticias/paramount-oferece-us-108-bilhoes-em-dinheiro-para-tomar-warner-da-netflix\u003c/a\u003e\u003c/small\u003e\\n\""
من المفترض أن يكون \u003cdiv\u003e\u003cdiv\u003e\u003c/div\u003e\u003c/div\u003e هو المحتوى.
هل قمت بتغيير رابط المدونة أيضًا بأي حال من الأحوال؟
عرض onebox يبدو غريبًا بالنسبة لي أيضًا، كنت أتوقع أن يحتوي على محتوى مقتطع ومخزن مؤقتًا بدلاً من ذلك، لذا أفترض أن body.present? هو false في الشرط أعلاه.
هل يمكنك الدخول إلى وحدة تحكم Rails والتحقق مما إذا كان TopicEmbed.where(topic_id: 157441).pick(:embed_url) يعرض لك رابط محتوى المدونة الصحيح؟
هل يمكنك ملاحظة أي أخطاء ذات صلة على https://tecnoblog.net/comunidade/logs؟
هل نجح تجاوز Cloudflare الخاص بك؟ يبدو أن نص https://tecnoblog.net/noticias/governo-renova-app-da-cnh-para-baratear-obtencao-do-documento هو 22 حرفًا فقط، ولا يحتوي على وسم عنوان.
هل هناك طريقة لإجبار Discourse على تحديث جميع عناوين URL المضمنة من فئة ما، وتتبعها إلى الوجهة النهائية؟
أعتزم الترحيل إلى تضمين Discourse (ذلك التضمين الكامل الذي كنت تختبره) عندما يكون جاهزًا للإنتاج. ولكن إذا لم تتطابق عناوين URL المضمنة، فمن المحتمل أن يؤدي ذلك إلى إنشاء مواضيع جديدة لكل مشاركة وفقدان التعليقات…
# الإعداد
CATEGORY_SLUG = 'tb'
category = Category.find_by(slug: CATEGORY_SLUG)
unless category
puts "خطأ: الفئة '#{CATEGORY_SLUG}' غير موجودة."
exit
end
puts "بدء المسح الكامل لروابط URL في الفئة '#{category.name}'..."
puts "قد يستغرق هذا بعض الوقت اعتمادًا على عدد المواضيع واستجابة موقعك..."
count_updated = 0
count_errors = 0
count_ok = 0
Topic.where(category_id: category.id).find_each do |topic|
current_url = topic.custom_fields["embed_url"]
# تخطي إذا لم يكن هناك embed_url
next unless current_url.present?
begin
# إجراء طلب GET مع متابعة عمليات إعادة التوجيه
response = Faraday.get(current_url)
final_url = response.env.url.to_s
# إذا كان الطلب ناجحًا (200 OK)
if response.status == 200
# التحقق مما إذا كان الرابط النهائي مختلفًا عن الرابط المحفوظ في قاعدة البيانات
# المقارنة تتجاهل الاختلافات الطفيفة إذا لزم الأمر، ولكن هنا نقارن السلسلة النصية بالضبط
if final_url != current_url
puts "\n[تحديث] الموضوع ##{topic.id}:"
puts " من: #{current_url}"
puts " إلى: #{final_url}"
topic.custom_fields["embed_url"] = final_url
topic.save_custom_fields(true)
count_updated += 1
else
# print "." # قم بإلغاء التعليق لرؤية التقدم البصري (نقاط)
count_ok += 1
end
else
puts "\n[خطأ HTTP #{response.status}] الموضوع ##{topic.id} - الرابط: #{current_url}"
count_errors += 1
end
rescue Faraday::ConnectionFailed, Faraday::TimeoutError => e
puts "\n[فشل الاتصال] الموضوع ##{topic.id} - الرابط: #{current_url} - #{e.message}"
count_errors += 1
rescue StandardError => e
puts "\n[خطأ عام] الموضوع ##{topic.id} - #{e.message}"
count_errors += 1
end
# اختياري: وقفة قصيرة لتجنب إرهاق خادم ووردبريس الخاص بك
# sleep 0.1
end
puts "\n\nملخص نهائي:"
puts "------------------------------------------------"
puts "المواضيع التي تم التحقق منها (موافق): #{count_ok}"
puts "المواضيع التي تم تحديثها: #{count_updated}"
puts "الأخطاء التي تم العثور عليها: #{count_errors}"
puts "------------------------------------------------"
@Thiago_Mobilon أثناء هذه الخطوة، هل قمت أيضاً بتحديث Discourse الخاص بك؟ قد نكون نشهد تطبيق توحيد تسوية embed_url على تضمينات WP Discourse كنتيجة لتحديث Discourse الخاص بك، والذي حدث في نفس الوقت الذي تم فيه الانتقال إلى تثبيت المجلد الفرعي. ما هو إصدار Discourse الذي تستخدمه حالياً؟ (وما هو الإصدار الذي كنت تستخدمه قبل الانتقال، إذا كنت تعرف ذلك؟)
مجرد ملاحظة جانبية أنه عندما أقوم بتشغيل هذين الأمرين محلياً على أحدث إصدار من Discourse، أحصل على نفس النتيجة، وهي محتوى HTML للمقالة
# مع الشرطة المائلة اللاحقة
TopicEmbed.find_remote("https://tecnoblog.net/noticias/governo-renova-app-da-cnh-para-baratear-obtencao-do-documento/")
# بدون الشرطة المائلة اللاحقة
TopicEmbed.find_remote("https://tecnoblog.net/noticias/governo-renova-app-da-cnh-para-baratear-obtencao-do-documento")
# ينتج نفس النتيجة
لا، هذه مشاكل مختلفة. بدأت الشرطة المائلة اللاحقة عندما انتقلنا إلى المجلد الفرعي، ولكن هناك أيضًا عناوين URL قديمة من سنوات مضت لها جزء مختلف الآن.
اضطررت إلى إعادة بناء التثبيت، لذا نعم، أعتقد أن هذا المعيار الجديد قد يكون السبب.
اقتراحي لحل هذه المشكلة: ألا يمكن لـ Discourse تتبع عملية إعادة توجيه واحدة أو اثنتين على الأقل لاسترداد البيانات؟ سيؤدي ذلك إلى حل مشكلة الشرطة المائلة اللاحقة وأيضًا تدعيم الموقع ضد التغييرات المحتملة في عناوين URL في المستقبل.
بالإضافة إلى ذلك، سيكون أكثر أمانًا، حيث لن تكون هناك حاجة لتشغيل نصوص برمجية لتحديث المواضيع القديمة، والتي قد تسبب بعض الضرر في قاعدة البيانات.