- ステータス
- 解決済み
- 報告対象
- WPML Multilingual CMS 4.6.7
- 解決されたバージョン
- WPML 4.9
- トピックタグ
- Bug, Performance
問題の概要
ユーザー数が多いWordPressサイトでWPML 文字列翻訳を使用している場合、WPML > 文字列翻訳ページにアクセスする際に大幅な遅延が発生する場合があります。この問題は、ユーザー数が増加するにつれて処理が遅くなる特定のクエリが原因です。
回避策
続行する前に、必ずサイトの完全なバックアップを取得してください。
- …/wp-content/plugins/sitepress-multilingual-cms/classes/user/class-wpml-translation-roles-records.phpファイルを開きます。
- 127行目を探します。
- 以下の部分を:
$preparedUserQuery = $this->wpdb->prepare( "SELECT u.id FROM {$this->wpdb->users} u INNER JOIN {$this->wpdb->usermeta} c ON c.user_id=u.ID AND CAST(c.meta_key AS BINARY)=%s AND c.meta_value {$compare} %s", "{$this->wpdb->prefix}capabilities", "%" . $this->get_capability() . "%" ); - 次のように変更します:
$preparedUserQuery = $this->wpdb->prepare( "SELECT u.id FROM {$this->wpdb->users} u INNER JOIN {$this->wpdb->usermeta} c ON c.user_id=u.ID AND c.meta_key=%s AND c.meta_value {$compare} %s", "{$this->wpdb->prefix}capabilities", "%" . $this->get_capability() . "%" );