تكوين WP Discourse لعرض التعليقات من Discourse

يمكنك استخدام Discourse كنظام تعليقات لـ Wordpress. تعتمد ميزات التعليق على ميزات النشر، لذا تحتاج إلى إعداد النشر لكي تعمل التعليقات. إذا قمت بإعداد النشر وكنت مستعدًا لإعداد التعليقات، شاهد هذا الفيديو القصير، أو اتبع التعليمات أدناه.

الخطوة التالية

بمجرد إعداد التعليقات، قد ترغب في الاطلاع على المواضيع التالية


تعليمات

إعداد التعليقات

لجعل تعليقات Discourse تظهر على موقع WordPress الخاص بك، يجب عليك تحديد إعداد “تمكين تعليقات Discourse”. عند تمكينه، سترى خيارين. سيقوم خيار “عرض التعليقات” بتحميل قالب تعليقات لكل منشور WordPress تم نشره على Discourse. سيعرض هذا القالب تعليقات Discourse أسفل منشورات WordPress. سيقوم خيار “عرض رابط للتعليقات” بتحميل قالب تعليقات يعرض رابطًا للموضوع المرتبط في Discourse أسفل المنشورات المنشورة. سيتم عرض عدد الردود على الموضوع في الرابط، ولكن لن يتم عرض أي ردود على WordPress.

تعمل كلتا خيارات التعليق هذه عن طريق تحميل قوالب التعليقات لمنشورات WordPress. هذا يعني أنها ستعمل فقط إذا كانت التعليقات ممكّنة للمنشور. إذا كنت ترغب في تمكين التعليقات لجميع المنشورات، ولكن لا تريد عرض أي تعليقات WordPress تاريخية للمنشورات التي لم يتم نشرها على Discourse، فقم بتمكين إعداد “إزالة قالب تعليقات WordPress”.

إعدادات

إليك بعض الأوصاف المختصرة لما تفعله إعدادات التعليقات الأخرى. إذا كنت لا تزال غير متأكد من أي من الإعدادات، قم بالرد على هذا الموضوع واطلب مزيدًا من التوضيح.

تحميل التعليقات باستخدام Ajax

يُستخدم هذا الإعداد لتحميل التعليقات من عميل WordPress، بدلاً من تحميلها من الخادم. هذا مفيد إذا كان تخزين الصفحات المؤقت يمنع تحميل التعليقات الجديدة على موقعك.

تحميل CSS التعليقات

يقوم هذا الإعداد بتحميل ورقة أنماط تصلح المشكلات المتعلقة بـ Discourse oneboxes والاقتباسات عند عرضها على WordPress.

عرض تعليقات WP الموجودة

حدد هذا الإعداد لعرض تعليقات WordPress الموجودة أيضًا للمنشورات التي تم نشرها أيضًا على Discourse، وحدد الإعداد.

عنوان التعليقات الموجودة

إذا كنت تعرض التعليقات الموجودة، فسيضيف هذا الإعداد عنوانًا فوق تعليقات WordPress.

إعدادات الاستيراد الانتقائي

هناك عدد من الإعدادات التي تسمح لك باستيراد التعليقات بشكل انتقائي. يجب أن تكون هذه واضحة بذاتها. القيم الافتراضية لكل من هذه هي مكان جيد للبدء، لذا قم بتغييرها فقط إذا كان لديك سبب لذلك

  • الحد الأقصى للتعليقات المرئية
  • الحد الأدنى لعدد الردود
  • الحد الأدنى لدرجة المنشورات
  • الحد الأدنى لمستوى الثقة
  • تجاوز درجة مستوى الثقة
  • استيراد الإعجابات من المشرف فقط
تنسيق التاريخ والوقت المخصص

يقوم هذا الإعداد بتنسيق التاريخ المعروض لكل تعليق Discourse يظهر على موقع WordPress الخاص بك. ابدأ بالقيمة الافتراضية. إذا وجدت أنك تريد تغيير تنسيق التاريخ، فانقر فوق الرابط في وصف الإعداد للحصول على تفاصيل حول كيفية القيام بذلك.

تخزين مؤقت لـ HTML التعليقات

يمكن استخدام هذا الإعداد لتحسين الأداء. يؤدي تخزين HTML التعليقات مؤقتًا إلى تقليل عدد الطلبات المقدمة إلى Discourse. يرتبط إعداده “مسح HTML التعليقات المخزن مؤقتًا” بوضوح.

سجلات التعليقات المطولة

سيؤدي تمكين هذا إلى تسجيل جميع عمليات استرداد التعليقات الناجحة من Discourse، بالإضافة إلى الأخطاء (الافتراضي).

مزامنة خطاف الويب لبيانات التعليقات

يمكن أن يؤدي تمكين خطاف الويب لمزامنة بيانات التعليقات في لوحة إعدادات “خطافات الويب” إلى تقليل عدد طلبات واجهة برمجة التطبيقات (API) التي يتم إجراؤها من WordPress إلى Discourse بشكل كبير. قبل تمكين خطاف الويب

  1. قم بزيارة عنوان URL الخاص بـ Discourse المقدم في وصف الإعداد (http://forum.example.com/admin/api/web_hooks).

  2. انقر فوق الزر “خطاف ويب جديد” واملأ النموذج

    • في حقل “عنوان URL للحمولة”، أدخل عنوان URL المقدم في وصف حقل “مزامنة بيانات التعليقات” الخاص بـ WP Discourse. سيكون شيئًا كهذا، باستثناء استخدام عنوان URL الخاص بموقع WordPress الخاص بك: https://wp-discourse.dev/wp-json/wp-discourse/v1/update-topic-content.

    • تأكد من تعيين حقل “نوع المحتوى” إلى application/json.

    • في حقل “السر”، أدخل سلسلة نصية، بطول 12 حرفًا على الأقل. ثم انسخ نفس المفتاح هذا إلى إعداد “مفتاح سر خطاف الويب” الخاص بـ WP Discourse.

    • في مربع “أي الأحداث يجب أن تشغل خطاف الويب هذا؟”، تأكد من تحديد “حدث المنشور”.

    • استخدم حقل “الفئات المشغلة” إذا كنت تنشر المنشورات فقط من WordPress إلى فئات معينة. بهذه الطريقة، لن يحتاج موقع WordPress الخاص بك إلى معالجة طلبات خطاف الويب للمواضيع التي ليس لها منشور Discourse مرتبط.

    • اترك إعداد “التحقق من شهادة TLS لعنوان URL للحمولة” ممكّنًا.

    أخيرًا، قم بتمكين مربع الاختيار “نشط”، وانقر فوق “إنشاء”. عند حفظ خطاف الويب، انقر فوق الزر “الانتقال إلى الأحداث”.

  3. بالعودة إلى WordPress، تأكد من أنك أدخلت سر خطاف الويب من Discourse في حقل “مفتاح سر خطاف الويب” وقم بتمكين إعداد خطاف الويب “مزامنة بيانات التعليقات”. ثم احفظ الخيارات.

يجب أن يعمل خطاف الويب الخاص بـ Discourse الآن. يجب عليك التحقق منه عن طريق النقر فوق الزر “Ping” الخاص بخطاف الويب على Discourse (الموجود في /admin/api/web_hooks/:webhook_id/events). تأكد من أن اختبار خطاف الويب يعيد رمز حالة 200.

ضبط فترة مزامنة عدد التعليقات لصفحات أرشيف WordPress

للحصول على العدد الصحيح لتعليقات Discourse لمنشور ما، يحتاج المكون الإضافي إلى إجراء طلب HTTP بشكل دوري إلى Discourse للحصول على عدد التعليقات الحالي. في الصفحات الفردية، يتم تعيين هذه الفترة لعدم تكرارها أكثر من كل 10 دقائق. بالنسبة لصفحات الأرشيف، يتم تعيين الفترة لعدم تكرارها أكثر من مرة كل 24 ساعة. السبب في ذلك هو تجنب إجراء طلبات متعددة إلى Discourse في كل مرة يتم فيها الوصول إلى صفحة أرشيف.

إذا كنت لا تزال تجد أن المكون الإضافي يجري طلبات كثيرة جدًا إلى Discourse عند عرض صفحات الأرشيف لموقعك، يمكنك ضبط archive_page_sync_period عن طريق الربط بمرشح 'discourse_archive_page_sync_period'. يمكنك القيام بذلك عن طريق إضافة شيء مثل هذا إلى ملف functions.php الخاص بالسمة الخاصة بك:

add_filter( 'discourse_archive_page_sync_period', 'my_namespace_archive_page_sync_period' );
function my_namespace_archive_page_sync_period( $sync_period ) {
  // This will change to sync_period for archived posts to once a week.
  return WEEK_IN_SECONDS;
}

إذا وجدت أن المكون الإضافي لا يقوم بما يكفي من الطلبات إلى Discourse لاسترداد أرقام التعليقات الحالية لصفحات الأرشيف، يمكنك إضافة شيء مثل هذا إلى ملف functions.php الخاص بالسمة الخاصة بك. سيؤدي هذا إلى تعيين archive_page_sync_period إلى 10 دقائق.
ملاحظة: على موقع مزدحم، قد يضع هذا عبئًا ثقيلًا على خادمك.

add_filter( 'discourse_archive_page_sync_period', 'my_namespace_archive_page_sync_period' );
function my_namespace_archive_page_sync_period( $sync_period ) {
  // This will change to sync_period for archived posts to once a week.
  return 10 * MINUTE_IN_SECONDS;
}

عرض التعليقات دون تحميل قالب تعليقات WordPress

يستخدم المكون الإضافي WP Discourse قالب تعليقات WordPress لتحميل تعليقات Discourse. إذا كانت السمة الخاصة بك لا تقوم بتحميل قالب التعليقات، يمكنك عرض التعليقات باستخدام الدالة المساعدة الثابتة get_discourse_comments. تتطلب هذه الدالة منك توفير معرف منشور WordPress الذي تريد عرض التعليقات له. إليك مثال بسيط لاستخدامها:

use WPDiscourse\Utilities\Utilities as DiscourseUtilities;
$discourse_comments = DiscourseUtilities::get_discourse_comments(859);
echo $discourse_comments;

سيتم عرض التعليقات بنفس الطريقة التي يتم عرضها بها إذا حددت خيار “تمكين تعليقات Discourse/عرض التعليقات” (الموجود في علامة تبويب إعدادات التعليقات الخاصة بالمكون الإضافي). عند استخدام هذه الدالة، يتم تجاهل قيمة هذا الإعداد، ولكن يتم احترام جميع إعدادات التعليقات الأخرى.

استكشاف الأخطاء وإصلاحها

القضية الأكثر شيوعًا مع تعليقات Discourse هي أنها قد لا تظهر فورًا بعد نشر المنشور على Discourse. هذا التأخير مقصود حيث يحاول المكون الإضافي تقليل عدد الطلبات التي يحتاج إلى إجراؤها إلى Discourse. إجراء طلب في كل مرة يتم فيها تحميل الصفحة سيؤدي إلى إبطاء موقعك. إذا لم ترَ التعليقات تظهر فورًا، انتظر 10 دقائق قبل تحديث الصفحة مرة أخرى.

مشكلات في عدد التعليقات عند عرض تعليقات Discourse و WordPress معًا

يستخدم المكون الإضافي wp-discourse خطاف تصفية WordPress get_comments_number حتى يمكن عرض عدد تعليقات Discourse التي تم إنشاؤها لمنشور ما في جميع أنحاء السمة الخاصة بك. هذا يخلق تعارضًا عند عرض تعليقات Discourse و WordPress معًا لمنشور ما. يمكن للمكون الإضافي حل هذا التعارض في معظم الأماكن. أحد الأماكن التي لا يمكن حلها فيها هو عنوان التعليق الذي غالبًا ما تعرضه سمات WordPress في رأس قسم التعليقات. هذا هو القسم الذي يبدأ بشيء مثل “2 thoughts on…”.

أسهل طريقة للقيام بذلك هي إضافة قاعدة إلى ملف css الخاص بالسمة الخاصة بك.

.discourse-comments-area ~ .comments-area .comments-title  {
	display: none;
}
7 إعجابات

@angus دليل وفيديو رائع جدًا، شكرًا لك على إعداده. لقد قمنا بتطبيق المكون الإضافي، ونواجه مشكلة في وظيفة التعليق. هناك سؤالان/مشكلتان لدينا هنا:

  • عندما ننشر ردًا على discourse (على المنشور المشترك من wordpress) نرى عدد الردود يتغير على wordpress، لكننا لا نرى أي تعليق يظهر.
  • نود تعطيل التعليقات في wordpress بحيث يمكن للمستخدمين الرد فقط عبر discourse، هل هذا ممكن؟

هذا ما نراه، هذا الرد ‘1’ هو من discourse، ولن تلاحظ أن الرد نفسه غير مرئي:

CC: @Abdelrahman_MoHamed

يا @Jacob_Peebles،

بافتراض أنك اتبعت الدليل أعلاه، فإن الشيء التالي الذي يجب التحقق منه هو السمة الخاصة بك. هل تستخدم سمة كتل (Block Theme)؟ إذا كان الأمر كذلك، يرجى الاطلاع على:

نعم، فقط قم بإيقاف التعليقات في ووردبريس.

  1. حدد الإعدادات > المناقشة من لوحة التحكم.
  2. قم بإلغاء تحديد المربع بجوار السماح للأشخاص بنشر تعليقات على المقالات الجديدة.
  3. انقر فوق حفظ الإعدادات.
إعجاب واحد (1)

@angus - رائع، لقد نجح الأمر تمامًا! نعم، يبدو أننا نستخدم محرر “الكتل”. يمكنك رؤية الأشياء وهي تعمل هنا:

الجزء الغريب الوحيد هو أن الأنماط/الخطوط لا تبدو أنها تنتقل إلى تعليقات المناقشة. لست متأكدًا مما إذا كانت هذه مجرد مشكلة في السمة الخاصة بنا، أم شيئًا يستحق الملاحظة.

شكرًا مرة أخرى.

عذرًا، إليك لقطة شاشة أيضًا.

يسرني أنه يعمل لديك يا جاكوب.

ستحتاج إلى إضافة تنسيق التعليقات الخاص بك. يتم تنسيق تعليقات الخطاب بشكل خفيف جدًا بشكل افتراضي لأن لكل سمة نهجها الخاص في التنسيق. في حالتك، بعض التنسيقات الأساسية مثل هذه يجب أن تؤدي الغرض

ol.comment-list {
    list-style: none;
    padding: 0;
}

img.avatar.photo.avatar-default {
    height: 40px;
    width: 40px;
}

.comment-author.vcard {
   display: flex;
   align-items: center;
   gap: 1em;
}

إعجاب واحد (1)

ممتاز @angus

مرحباً @angus

شكراً لك على الملحق الرائع والتعليمات المفيدة!

لقد قمت بدمج ديسكورس (Discourse) مع موقعي الووردبريس (Wordpress) وهو متصل.
لقد تمكنت من إنشاء منشور على موقع ووردبريس (WP) ورأيت أنه ظهر كموضوع جديد في ديسكورس (Discourse)، وهذا رائع!

ومع ذلك، فإنه يستمر في عرض المحتوى الأولي للمنشور فقط كملخص (مثل “hello world” وما إلى ذلك) على ديسكورس، ولا يقوم بتحديث محتوى موضوع ديسكورس بعد تغييره في منشور ووردبريس. إنه يعكس التغيير في المحتوى فقط إذا نقرت على “عرض المنشور كاملاً” (Show Full Post)، مما يعني أنني لا أستطيع تغيير الإعدادات لعرض المحتوى الكامل للمنشور وليس مجرد الملخص. عندما أفعل ذلك، فإنه يزيل الزر من موضوع ديسكورس ويعرض فقط المحتوى الأولي قبل تحديثه. لا أعرف إذا كنت أوضح قصدي؟

وبالإضافة إلى ذلك، فإن أي تعليقات تُنشر من ديسكورس كردود على الموضوع لا تظهر تحت المنشور على ووردبريس. لقد قمت بتمكين التعليقات وأنا أستخدم قالب أسترا (Astra theme)، لذا ليس محرر كتل (block editor). لست متأكداً مما يجب علي فعله لإصلاح هذا.

أي نصيحة بخصوص هاتين النقطتين ستكون محل تقدير كبير، شكراً!

مرحباً @Clo، شكراً لتجربة المكون الإضافي. هل يمكنك توضيح الحالة المثالية للنشر بالنسبة لك؟ حاول صياغتها كـ “قصة مستخدم”. أما بالنسبة للتعليقات، هل التعليقات في ووردبريس مفعلة على موقعك؟

مرحباً @angus

يبدو أن التعليقات قد تم سحبها أخيرًا من موقع Discourse إلى موقع WP، لقد استغرق الأمر بعض الوقت. شكراً لك على أي حال!

ومع ذلك، أردت أيضًا أن أسأل ما إذا كان من الممكن للمكون الإضافي إنشاء منشور جديد في WP كلما تم إنشاء موضوع جديد في Discourse؟ أم أن ذلك ممكن فقط في الاتجاه المعاكس؟

من الممكن فقط القيام بذلك باستخدام مكونات إضافية مخصصة إضافية على جانبي ووردبريس وديسكورس. المكون الإضافي WP Discourse نفسه غير مصمم لذلك.

شكرا جزيلا، هذا مفيد.
إضافة رائعة!

إعجاب واحد (1)