- Статус
- Открыто
- Теги темы
- 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 );
и сразу после неё добавьте вторую строку следующим образом:
$users = $this->wpdb->get_col( $preparedUserQuery ); $users = array_unique( $users );
Как всегда при внесении подобных изменений, перед началом работы убедитесь, что у Вас есть актуальная резервная копия.