WPML
상태
미해결
보고된 제품
WPML Multilingual CMS 4.7.6

문제 개요

기본값인 “wp_”가 아닌 사용자 정의 데이터베이스 접두사를 사용하고 30개 이상의 언어가 있는 사이트에서 WPML을 사용하는 경우, 번역 대시보드를 방문할 때 데이터베이스 오류가 발생할 수 있습니다.

이 문제는 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

알려진 모든 문제 →