- Stato
- Aperto
- Tag dell’argomento
- Bug
Panoramica del problema
Nella scheda Traduttori della pagina in WPML > Gestione traduzioni c’è un’opzione per aggiungere un manager delle traduzioni che apre una casella di ricerca. In alcuni casi, la ricerca di utenti validi non restituisce alcun utente da poter selezionare.
Questo accade quando ci sono più ruoli con il permesso minimo richiesto, come avverrebbe ad esempio in un sito WooCommerce, dove sia il ruolo di Shop Manager che quello di Editor del core dispongono del permesso richiesto.
Soluzione alternativa
Non esiste una soluzione alternativa semplice che non implichi la modifica di un file del plugin WPML.
Puoi modificare il file plugins/sitepress-multilingual-cms/classes/user/class-wpml-translation-roles-records.php.
Individua questa riga (intorno alla riga 144):
$preparedUserQuery .= $this->wpdb->prepare( " AND c.meta_value LIKE %s", "%{$required_wp_role}%" );
e cambia AND in OR in questo modo:
$preparedUserQuery .= $this->wpdb->prepare( " OR c.meta_value LIKE %s", "%{$required_wp_role}%" );
Quindi individua questa riga (intorno alla riga 168):
$users = $this->wpdb->get_col( $preparedUserQuery );
e aggiungi una seconda riga subito dopo, in questo modo:
$users = $this->wpdb->get_col( $preparedUserQuery ); $users = array_unique( $users );
Come sempre quando si apportano modifiche di questo tipo, assicurati di avere un backup recente prima di procedere.