WPML
Trạng thái
Đang mở
Được báo cáo cho
WPML Multilingual CMS 4.7.6

Tổng quan về lỗi

Khi sử dụng WPML trên một trang web có tiền tố cơ sở dữ liệu tùy chỉnh (không phải “wp_” mặc định) và 30 ngôn ngữ trở lên, bạn có thể gặp lỗi cơ sở dữ liệu khi truy cập bảng điều khiển dịch thuật.

Điều này xảy ra do tiền tố cơ sở dữ liệu được mã hóa cứng trong mã plugin WPML.

Giải pháp tạm thời

Vui lòng đảm bảo bạn có bản sao lưu đầy đủ cho trang web của mình trước khi tiếp tục.

Mở:

/wp-content/plugins/sitepress-multilingual-cms/vendor/wpml/wpml/src/Infrastructure/WordPress/Component/Item/Application/Query/SearchQuery/QueryBuilder/ManyLanguagesStrategy/SearchQueryBuilder.php

Tìm:

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

Thay thế bằng:

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

Thay đổi này đảm bảo rằng truy vấn sử dụng đúng tiền tố tùy chỉnh thay vì wp_ được mã hóa cứng.

Một vị trí khác là trong:

/wp-content/plugins/sitepress-multilingual-cms/vendor/wpml/wpml/src/Infrastructure/WordPress/Component/Item/Application/Query/SearchQuery/QueryBuilder/ManyLanguagesStrategy/SearchPopulatedTypesQueryBuilder.php

Tìm:
      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

Thay thế bằng:

      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

Tất cả các lỗi đã ghi nhận →