- الحالة
- مفتوحة
- أُبلغ عنها لـ
- WPML Multilingual CMS 4.7.6
نظرة عامة على المشكلة
عند استخدام WPML على موقع ببادئة قاعدة بيانات مخصصة (ليست البادئة الافتراضية «wp_») و30 لغة أو أكثر، قد تواجه خطأ في قاعدة البيانات عند زيارة لوحة إدارة الترجمة.
يحدث هذا بسبب بادئة قاعدة بيانات مبرمجة بشكل ثابت في كود إضافة WPML.
حل بديل مؤقت
يُرجى التأكد من وجود نسخة احتياطية كاملة لموقعك قبل المتابعة.
افتح:
/wp-content/plugins/sitepress-multilingual-cms/vendor/wpml/wpml/src/Infrastructure/WordPress/Component/Item/Application/Query/SearchQuery/QueryBuilder/ManyLanguagesStrategy/SearchQueryBuilder.php
ابحث عن:
LEFT JOIN wp_icl_translations target_t
ON target_t.trid = source_t.trid
AND target_t.language_code IN ({$gluedEscapedLanguageCodes})
LEFT JOIN wp_icl_translation_status target_ts
ON target_ts.translation_id = target_t.translation_id
استبدل بـ:
LEFT JOIN {$this->queryPrepare->prefix()}icl_translations target_t
ON target_t.trid = source_t.trid
AND target_t.language_code IN ({$gluedEscapedLanguageCodes})
LEFT JOIN {$this->queryPrepare->prefix()}icl_translation_status target_ts
ON target_ts.translation_id = target_t.translation_id
يضمن هذا التغيير أن يستخدم الاستعلام البادئة المخصصة الصحيحة بدلاً من wp_ المبرمجة بشكل ثابت.
مكان آخر في:
/wp-content/plugins/sitepress-multilingual-cms/vendor/wpml/wpml/src/Infrastructure/WordPress/Component/Item/Application/Query/SearchQuery/QueryBuilder/ManyLanguagesStrategy/SearchPopulatedTypesQueryBuilder.php
ابحث عن:
LEFT JOIN wp_icl_translations target_t
ON target_t.trid = source_t.trid
AND target_t.language_code IN ({$gluedEscapedLanguageCodes})
LEFT JOIN wp_icl_translation_status target_ts
ON target_ts.translation_id = target_t.translation_id
استبدل بـ:
LEFT JOIN {$this->queryPrepare->prefix()}icl_translations target_t
ON target_t.trid = source_t.trid
AND target_t.language_code IN ({$gluedEscapedLanguageCodes})
LEFT JOIN {$this->queryPrepare->prefix()}icl_translation_status target_ts
ON target_ts.translation_id = target_t.translation_id