WPML
ステータス
解決済み
報告対象
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() . "%"
    		);

すべての既知の問題 →