رابط WP للعودة إلى Discourse لا يظهر عند استخدام كود مخصص

مرحباً،

لدي مشكلة حيث لا يوجد رابط لمنتدى Discourse على جانب WP. إليك بعض الإجابات على مواضيع المنتدى التي وجدتها حول هذا الموضوع:

  • تم ملء جميع حقول “محتوى النص” في قسم مسؤول WP → المكونات الإضافية.
  • تتم المزامنة؛ يمكنني رؤية التعليقات على كلا الجانبين.
  • سلسلة عنوان URL متاحة في جدول قاعدة البيانات _postmeta

image

يعرض قسم التعليقات إشعارات:

**Notice**: Trying to access array offset on value of type null in **/home/u48255p44743/domains/fxweb.snowfreakz.nl/public_html/wp-content/plugins/wp-discourse/lib/discourse-comment-formatter.php** on line **90**
**Notice**: Trying to access array offset on value of type null in **/home/u48255p44743/domains/fxweb.snowfreakz.nl/public_html/wp-content/plugins/wp-discourse/lib/discourse-comment-formatter.php** on line **106**
**Notice**: Trying to access array offset on value of type null in **/home/u48255p44743/domains/fxweb.snowfreakz.nl/public_html/wp-content/plugins/wp-discourse/lib/discourse-comment-formatter.php** on line **127**
**Notice**: Trying to access array offset on value of type null in **/home/u48255p44743/domains/fxweb.snowfreakz.nl/public_html/wp-content/plugins/wp-discourse/lib/discourse-comment-formatter.php** on line **127**
**Notice**: Trying to access array offset on value of type null in **/home/u48255p44743/domains/fxweb.snowfreakz.nl/public_html/wp-content/plugins/wp-discourse/lib/discourse-comment-formatter.php** on line **148**
**Notice**: Trying to access array offset on value of type null in **/home/u48255p44743/domains/fxweb.snowfreakz.nl/public_html/wp-content/plugins/wp-discourse/lib/discourse-comment-formatter.php** on line **148**

والتي تتعلق جميعها بـ $URL في الملف. أقوم باستدعاء التعليقات باستخدام:

global $post;
use WPDiscourse\Utilities\Utilities as DiscourseUtilities;
$discourse_comments = DiscourseUtilities::get_discourse_comments($post->ID);
echo $discourse_comments;
?>

أمثلة على عناوين URL:
https://fxweb.snowfreakz.nl/nogmaals-een-test/
https://fxdisc.snowfreakz.nl/t/nogmaals-een-test/23/2

echo get_post_meta( $post->ID, 'discourse_permalink', true );

وضع الاستدعاء المباشر أعلاه لا يعطيني أي محتوى كرابط (وجدته في موضوع آخر)

أعمل على Apache / PHP7.4 / WP 6.0.2
بعد ساعات من استكشاف الأخطاء وإصلاحها، نفدت خياراتي. ربما لدى شخص ما فكرة !؟
شكراً مقدماً،

جوب

مرحباً Joep،

إذا كان كلا هذين الأمرين صحيحين، فهناك مشكلة أخرى (غير WP Discourse) في موقعك.

هل بدأ هذا مؤخرًا؟ ما الذي تغير آخر في تثبيت WP الخاص بك مؤخرًا؟ إضافات أخرى، سمات، تخزين مؤقت، إلخ.

مرحباً أنجوس،

شكراً لتواصلك… إنها تثبيت ووردبريس “جديد” يعمل بباني قوالب Bricks وتم تثبيت WPdiscourse للتو للاتصال. بخلاف التخزين المؤقت للخادم mod_headers، لا توجد إضافات أخرى قوية تغير أي نصوص برمجية.

لقد أضفت للتو سطر PHP المباشر مرة أخرى و… بشكل سحري، العنوان موجود. ليس لدي أي فكرة عما فعلته بشكل مختلف.

<?php
global $post;
use WPDiscourse\Utilities\Utilities as DiscourseUtilities;
$discourse_comments = DiscourseUtilities::get_discourse_comments($post->ID);
echo $discourse_comments;

echo get_post_meta( $post->ID, 'discourse_permalink', true );
?>

لكن لا يزال لدي الإشعارات المتعلقة بخطوط التعليمات البرمجية حيث يجب إنشاء العنوان والرابط بعد “متابعة المناقشة في” لا يظهر.

https://fxweb.snowfreakz.nl/nogmaals-een-test/

جوب

حسناً. لماذا تقوم بتحميل التعليقات والرابط الدائم باستخدام الكود المخصص الخاص بك؟ المكون الإضافي يعالج هذا الأمر نيابة عنك.

مرحباً،

عندما أقوم بتضمين تعليقات “main” الخاصة بووردبريس (وهي عنصر قالب Bricks)، فإنها تعرض “نموذج تعليقات ووردبريس العادي” الذي لم يتم استبداله بواسطة إضافة Discourse reviews. انظر الرابط أعلاه؛ لقد قمت بتغيير التخطيط بإضافة تعليقات ووردبريس أسفل المدونة.

إعدادات الواجهة الخلفية

لذلك، قمت بإضافة الكود يدويًا لأن ذلك أظهر المراجعات وربما يتجاوز أي عدم توافق مع Bricks builder.

جوب

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

حسناً. من المحتمل أن تكون هناك مشكلة في أولوية التحميل مع منشئ القوالب الذي تستخدمه هنا. سأحاول إعادة إنشائه غداً. انتظر.

هل يمكنني إرسال منشئ القوالب لك كمرجع؟

ستكون هناك تحديثات مختلفة لوظيفة الأداة المساعدة get_discourse_comments في الإصدار التالي (2.4.6)، والذي يتم إعداده حاليًا للإصدار. سيبدو توقيع طريقة الأداة المساعدة المحدث كما يلي

/**
* الحصول على HTML لتعليقات Discourse بحيث يمكن عرضه دون تحميل قالب التعليقات.
*
* @param int $post_id معرف المنشور لعرض التعليقات.
* @param bool $perform_sync يحدد ما إذا كان تتم مزامنة التعليقات عند تحميل التعليقات.
* @param bool $force_sync يحدد ما إذا كان يتم تجاوز ذاكرة التخزين المؤقت لمزامنة التعليقات عند تحميل التعليقات.
* @param string $comment_type نوع عرض التعليق.
*
* @return string
*/
public static function get_discourse_comments( $post_id, $perform_sync = true, $force_sync = false, $comment_type ) {

@Joep_Kannegieter سيكون لهذا بعض النتائج لحالتك (وبعض الحالات الأخرى):

  • سيعمل عرض التعليقات
  • ستتحكم في نوع عرض التعليقات (أي جميع التعليقات أو رابط التعليق) برمجيًا
  • ستتحكم في ذاكرة التخزين المؤقت للتعليقات برمجيًا

انظر المزيد

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

شكرا! سأقوم بتثبيته وتجربته. سأبلغ بالنتائج.

لم يتم إصداره بعد. انتظر حتى ترى الإصدار 2.4.6 من المكون الإضافي جاهزًا للتحديث في لوحة تحكم ووردبريس الخاصة بك (سأقوم بتنبيهك هنا أيضًا).

مرحباً أنجوس،

بالعودة إلى هنا؛ في الأساس “لقد جعلته يعمل” على الرغم من أنه ليس مع قالب Bricks Builder.
عندما أتحول إلى سمة twentytwenty، يظهر تكامل Discourse أسفل منشور المدونة، ليحل محل حقل التعليقات

عند استخدام Bricks Builder، يوجد عنصر “Comments” يقوم بتحميل تعليقات WP؛ والتي لا يتم استبدالها بواسطة المكون الإضافي. ولم يتم استدعاؤها برمجياً باستخدام:

عند استدعائها برمجياً، فإنها تثير الخطأ:

خطأ: وسيطات قليلة جداً للدالة WPDiscourse\Utilities\Utilities::get_discourse_comments()، تم تمرير 1 وفي /home/u43655p432443/domains/domain.nl/public_html/wp-content/themes/bricks/includes/elements/code.php(159) : eval()'d code on line 4 و 4 متوقعة بالضبط

لذا، فهذه مشكلة متعلقة بـ Bricks. سأسأل مجتمع Bricks أيضاً.

جوب

في الوقت الحالي، أستخدم PHP فقط لاستدعاء التعليقات في القالب، باستخدام

<?php comments_template(); ?>

مما يتجاوز عنصر تعليقات Bricks ويستخدم نواة ووردبريس؛ وهذا يعمل.

Joep

يخبرك هذا الخطأ أن استخدامك لوظيفة الأداة المساعدة get_discourse_comments يحتاج إلى تحديث. إليك مثال لكيفية استخدامها.

global $post;
use WPDiscourse\Utilities\Utilities as DiscourseUtilities;
$discourse_comments = DiscourseUtilities::get_discourse_comments($post->ID, true, true, 'display-comments');
echo $discourse_comments;