الإضافة تحاول إعادة النشر على Discourse بعد كل تحديث

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

لاحظت هذا أيضًا عند تحديث تدوينات قديمة جدًا في ووردبريس، حيث تظهر في الفئة الافتراضية “الأخبار” في منتدى Discourse، مما يربك القراء.

هل هناك أي إعداد مفقود لتجنب ذلك؟
شكراً جزيلاً!

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

إعجابَين (2)

مرحباً @npm0912 هل يمكنك إجراء اختبار لي؟

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

يرجى أيضًا مشاركة تنزيل لسجلات WP Discourse الخاصة بك معي.

عندما أحاول تعديل منشور تم نشره لأول مرة قبل 10 أيام تقريبًا، أرى حالة منشور Discourse هذه:

حاولت تحديث المنشور وحدث نفس الخطأ. تلقيت أيضًا نفس البريد الإلكتروني بشأن الفشل.
آخر خطأ من السجلات هو:

[2024-05-13 18:02:53] publish.ERROR: create_post.post_error {"wp_title":"Nextcloud exhibiting at global events in May 2024","wp_author_id":"9","wp_post_id":209030,"response_message":"Embed url has already been taken","http_code":422}

ألا ينبغي أن يكون هناك خيار في صفحة الإعدادات يقوم بتعطيل محاولة إعادة النشر عندما يكون المنشور موجودًا بالفعل في Discourse؟

شكرا!

حسنًا، هذا يعني أن نسخة ووردبريس الخاصة بك لا تسمح لمكون WP Discourse الإضافي بحفظ حقول بيانات ما بعد النشر بشكل صحيح، على الأرجح بسبب مكون إضافي آخر أو سمة على موقعك. هل يمكنك مشاركة تنزيل سجل WP Discourse؟ سيشمل ذلك قائمة بالمكونات الإضافية التي قد تشير إلى سبب المشكلة.

عادةً ما يقوم المكون الإضافي بحفظ تفاصيل النشر بعد النشر الأول. هذا لا يحدث على موقعك. هذا ما نحتاج إلى معرفته :slight_smile:

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

wp-discourse-logs-metafile-2024-04-17-2024-05-13.txt (2.5 KB)

أخبرني إذا كان هناك مكون إضافي معروف يمكن أن يتعارض مع المكون الإضافي لـ Discourse.

شكراً جزيلاً على تخصيص الوقت للتحقيق في هذا الأمر!

لديك عدد قليل من الإضافات التي قد تكون السبب. كإجراء أول، هل يمكنك تمكين هذا الإعداد في إعدادات “النشر” الخاصة بـ WP Discourse.

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

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

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

مرحباً وشكراً لك على وقتك مرة أخرى!

لقد قمت بتمكين هذا الإعداد ولكن المشكلة لا تزال قائمة.
نحن نستخدم بالفعل موقعًا تجريبيًا والشيء المضحك هو أنه حتى لو كانت الإضافات والسمات والملفات متطابقة تمامًا، فإنها تتصرف بشكل مختلف - مما يعني أنه بعد نشر منشور تجريبي، فإنه يظهر على Discourse بشكل صحيح، ثم إذا عدت إلى نفس المنشور، فلن أرى خطأ “عنوان URL المضمن قد تم أخذه بالفعل” في إعدادات الشريط الجانبي لـ Discourse. بدلاً من ذلك، أراه على هذا النحو:

إذًا، الاختلافات في الخادم هي:
الموقع التجريبي:
WordPress - 6.5.3
PHP - 8.1.27
MySQL - 10.6.16

الموقع المباشر:
WordPress - 6.5.3
PHP - 8.1.2-1ubuntu2.17
MySQL - 5.5.5

مرحباً @npm0912، هذا يوضح أن المشكلة تتعلق ببيئتك.

  1. هل يمكنك مشاركة ملف “meta” الكامل من عارض سجلات WP Discourse من كلا المثيلين؟
  2. ما هي الاختلافات بين Discourse الذي تستخدمه مع البيئة التجريبية وتلك التي تستخدمها في الإنتاج؟
  3. هل تستخدم أي حلول للتخزين المؤقت أو شبكة توصيل المحتوى (CDN) أو موازنة التحميل في بيئة ووردبريس الإنتاجية التي لا تستخدمها في البيئة التجريبية؟

أهلاً @angus،

  1. بالتأكيد، إليك السجلات:
    بيئة الاختبار:
    Staging wp-discourse-logs-metafile-2023-04-13-2024-05-28.txt (2.4 KB)
    الموقع المباشر:
    LIVE wp-discourse-logs-metafile-2024-05-13-2024-05-28.txt (2.4 KB)

  2. مثيل Discourse هو نفسه، الاختلاف الوحيد هو أنني من بيئة الاختبار أنشر في فئة منتدى أخرى.

  3. أستخدم WP Rocket و Redis cache في كلا المثيلين، لذا أعتقد أن هذا لن يؤثر.

شكراً لك!

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

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

لاحظ أن ووردبريس يتطلب حاليًا إصدار MySQL 8.0 أو أحدث. تحتاج إلى ترقية قاعدة بيانات الإنتاج الخاصة بك.

مرجع متقاطع: Could not update the meta value of discourse_post_id in database - #2 by angus

في الواقع، حصل WP Discourse على معلومات قاعدة البيانات هذه بشكل خاطئ. الإصدار الصحيح لقاعدة البيانات هو 10.6.16-MariaDB-0ubuntu0.22.04.1

الإصدار المطبوع في هذا الملف هو ناتج عن دالة Wordpress أساسية:

$wpdb->db_version()

انظر هنا في الكود، وانظر المزيد

هذا هو ما يعتقد Wordpress أنه يستخدمه. يبدو أن هذه هي مشكلتك.

أنت على حق. لقد تحققت مرة أخرى من الدالة db_version() داخل السمة وبالفعل حصلت على 5.5.5 كنتيجة. ولكن في صفحة “صحة الموقع” في الواجهة الخلفية أرى الإصدار 10.6.16-MariaDB - وهو نفس الإصدار الذي ذكره مسؤولو النظام لي.. أعني أن هذا يجب أن يكون أيضًا الإصدار الذي تراه ووردبريس، أليس كذلك؟

عذرًا، ولكن قد تكون هناك عدة أمور تحدث هنا وليس من الممكن حقًا تحديدها بثقة دون فحص خادمك.

بالنظر إلى المشكلات التي أبلغت عنها، أقترح التحقيق في هذا الجانب بدقة.