WPML
Статус
Открыто
Теги темы
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 );

Как всегда при внесении подобных изменений, перед началом работы убедитесь, что у Вас есть актуальная резервная копия.

Все известные проблемы →