- Stato
- Aperto
- Segnalato per
- WPML Multilingual CMS 4.7.6
Panoramica del problema
Quando usi WPML su un sito con un prefisso del database personalizzato (non quello predefinito “wp_”) e 30 o più lingue, potresti riscontrare un errore del database quando visiti la dashboard di traduzione.
Questo si verifica a causa di un prefisso del database hard-coded nel codice del plugin WPML.
Soluzione alternativa
Assicurati di avere un backup completo del tuo sito prima di procedere.
Apri:
/wp-content/plugins/sitepress-multilingual-cms/vendor/wpml/wpml/src/Infrastructure/WordPress/Component/Item/Application/Query/SearchQuery/QueryBuilder/ManyLanguagesStrategy/SearchQueryBuilder.php
Cerca:
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
Sostituisci con:
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
Questa modifica assicura che la query utilizzi il prefisso personalizzato corretto invece di wp_ hardcoded.
Un altro punto è in:
/wp-content/plugins/sitepress-multilingual-cms/vendor/wpml/wpml/src/Infrastructure/WordPress/Component/Item/Application/Query/SearchQuery/QueryBuilder/ManyLanguagesStrategy/SearchPopulatedTypesQueryBuilder.php
Cerca:
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
Sostituisci con:
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