- Statut
- Ouvert
- Signalé pour
- WPML Multilingual CMS 4.7.6
Aperçu de l’anomalie
Lorsque vous utilisez WPML sur un site avec un préfixe de base de données personnalisé (et non le préfixe par défaut « wp_ ») et 30 langues ou plus, vous pouvez rencontrer une erreur de base de données en visitant le tableau de bord de traduction.
Cela est dû à un préfixe de base de données codé en dur dans le code de l’extension WPML.
Solution de contournement
Assurez-vous d’avoir une sauvegarde complète de votre site avant de procéder.
Ouvrez :
/wp-content/plugins/sitepress-multilingual-cms/vendor/wpml/wpml/src/Infrastructure/WordPress/Component/Item/Application/Query/SearchQuery/QueryBuilder/ManyLanguagesStrategy/SearchQueryBuilder.php
Recherchez :
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
Remplacez par :
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
Cette modification garantit que la requête utilise le préfixe personnalisé correct au lieu du préfixe wp_ codé en dur.
Un autre emplacement se trouve dans :
/wp-content/plugins/sitepress-multilingual-cms/vendor/wpml/wpml/src/Infrastructure/WordPress/Component/Item/Application/Query/SearchQuery/QueryBuilder/ManyLanguagesStrategy/SearchPopulatedTypesQueryBuilder.php
Recherchez :
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
remplacez par :
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