- ステータス
- 未解決
- トピックタグ
- Bug
問題の概要
WPML > 翻訳管理ページの「翻訳者」タブには、「翻訳マネージャーを追加する」オプションがあり、検索ボックスが表示されます。一部の状況では、有効なユーザーを検索しても、選択できるユーザーが何も返されないことがあります。
これは、最小限の必須権限を持つロールが複数存在する場合に発生します。たとえば、ショップマネージャーとコアの編集者ロールの両方が必須権限を持つWooCommerceサイトなどで発生します。
回避策
WPMLプラグインファイルの編集を伴わない簡単な回避策はありません。
plugins/sitepress-multilingual-cms/classes/user/class-wpml-translation-roles-records.phpファイルを編集します。
以下の行(144行目付近)を見つけます。
$preparedUserQuery .= $this->wpdb->prepare( " AND c.meta_value LIKE %s", "%{$required_wp_role}%" );
次のように、ANDをORに変更します。
$preparedUserQuery .= $this->wpdb->prepare( " OR c.meta_value LIKE %s", "%{$required_wp_role}%" );
次に、以下の行(168行目付近)を見つけます。
$users = $this->wpdb->get_col( $preparedUserQuery );
その直後に次のような2行目を追加します。
$users = $this->wpdb->get_col( $preparedUserQuery ); $users = array_unique( $users );
このような変更を行う際は、作業を進める前に必ず最新のバックアップを取得してください。