Salta la navigazione

Questo è il forum di assistenza tecnica di WPML, il plug-in multilingue di WordPress.

La sua lettura è permessa a tutti, ma la pubblicazione è riservata esclusivamente ai clienti di WPML. Il team di WPML risponde sul forum 6 giorni su 7, 22 ore su 24.

Sun Mon Tue Wed Thu Fri Sat
- 11:00 – 15:00 11:00 – 15:00 11:00 – 15:00 11:00 – 15:00 11:00 – 15:00 -
- 16:00 – 20:00 16:00 – 20:00 16:00 – 20:00 16:00 – 20:00 16:00 – 20:00 -

Fuso orario del fornitore: Europe/Rome (GMT+01:00)

Questo ticket contiene 11 risposte, ha 1 voce.

Ultimo aggiornamento da Laura 2 ora, 18 minuto fa.

Assistito da: Laura.

Autore Messaggi
Gennaio 17, 2025 a 9:49 am #16605018

andreaB-104

Background of the issue:
Tempo fa avevo inserito questo script nel functions.php che funzionava per tutti gli utenti con ruolo personalizzato 'post-editor' o 'product-manager'. Ultimamente mi sono accorto che non sta più funzionando. Ho seguito questa guida: https://wpml.org/forums/topic/you-can-only-edit-translations-assigned-to-you-2 applicando il nuovo script, ma non ha comunque risolto il problema.

add_filter('wpml_user_can_translate', function ($user_can_translate, $user){
if ( (in_array('post-editor', (array) $user->roles, true) || (in_array('product-manager', (array) $user->roles, true) ) ) && current_user_can('translate') ) {
return true;
}

return $user_can_translate;
}, 10, 2);

Symptoms:
Lo script non sta più funzionando per consentire a tutti gli utenti con ruoli personalizzati di iniziare e/o modificare traduzioni.

Questions:
Perché lo script non funziona più per i ruoli personalizzati 'post-editor' e 'product-manager'?
C'è un modo per risolvere il problema con lo script attuale?

Gennaio 17, 2025 a 10:18 am #16605251

Alejandro
Supporter

Lingue: Inglese (English ) Spagnolo (Español ) Italiano (Italiano )

Fuso orario: Europe/Rome (GMT+01:00)

Ciao,

Provo ad aiutarti mentre un supporter prende il tuo ticket.

Mi puoi dire se questo script ti è stato dato da un supporter? perché quello che dici non è supportato in WPML per una questione di restrizioni in WP.

Ogni traduzione si divide in "lavori" che sono sessioni di traduzione. non ci possono essere 2 persone assegnate alla stessa sessione perché altrimenti quando si finisce la traduzione, non si riesce a capire chi è effettivamente il "posessore" di quella sessione.

Nel database soltanto 1 persona può essere assegnata alla sessione di traduzione (Lavoro di traduzione) quindi sospetto che questo ha a che fare con la ragione per cui lo script non funziona più.

il codice personalizzato non è supportato da noi. Mi piacerebbe avere più dettagli sulla ragione per cui usi lo script e i dettagli su come funzionava per vedere se per caso possiamo offrirti qualche soluzione.

Facci sapere.

Gennaio 17, 2025 a 10:48 am #16605476

andreaB-104

Ciao Alejandro,
uso quello script, mi sembra da almeno un paio di anni. Avevo già riscontrato questo problema in passato e leggendo nel forum o tramite suggerimento di un vostro collaboratore, ho elaborato quello script che per un certo periodo di tempo mi ha dato la possibilità di far modificare a chiunque avesse quei ruoli indicati le traduzioni iniziate da altri.

Anche quest'altro script suggerito nel forum purtroppo non funziona più: https://wpml.org/forums/topic/you-can-only-edit-translations-assigned-to-you-2/

function wpml_custom_assign_capability() {
$users = get_users();
foreach ($users as $user) {
if (!in_array('subscriber', $user->roles) && !in_array('admin', $user->roles)) {
if (!user_can($user, 'wpml_manage_translation_management')) {
$user->add_cap('wpml_manage_translation_management');
}
}
}
}
add_action('init', 'wpml_custom_assign_capability');

Ma il fatto che nel database soltanto 1 persona può essere assegnata alla sessione di traduzione (Lavoro di traduzione) è una modifica recente? In ogni caso gli amministratori possono comunque modificare ogni cosa.
Vorrei che tutti gli utenti nei ruoli indicati potessero modificare tutte le traduzioni, un po' come possono fare gli amministratori, senza assegnargli però il ruolo di amministratori. E' possibile farlo?

Gennaio 17, 2025 a 5:13 pm #16607673

Laura
Supporter

Lingue: Inglese (English ) Italiano (Italiano )

Fuso orario: Europe/Rome (GMT+01:00)

Ciao, è sempre stato così, solo una persona può modificare la traduzione.

Non è possibile fare quello che chiedi, anche lo snippet riportato nell'ultimo post non è chiaro se funzioni o meno stando al post. In ogni caso non dovrebbe funzionare.

Quello che posso fare è aprire una feature request per richiedere questa funzionalità, ma non possiamo fornire del codice custom.

Gennaio 18, 2025 a 8:00 am #16608744

andreaB-104

Ciao Laura, ti assicuro che tempo fa funzionava correttamente.
Perché gli utenti con ruolo di "amministratore" invece possono modificare qualsiasi traduzione anche iniziata da altri?

Gennaio 20, 2025 a 8:23 pm #16615497

Laura
Supporter

Lingue: Inglese (English ) Italiano (Italiano )

Fuso orario: Europe/Rome (GMT+01:00)

Non metto in dubbio che funzionasse, si vede che con gli aggiornamenti non funziona più.
Con queste modifiche funziona?

add_filter('wpml_user_can_translate', function ($user_can_translate, $user){
    return true;
}, 10, 2);

Gli amministratori hanno tutti i permessi, quindi anche quello di traduzione.

Gennaio 21, 2025 a 8:25 am #16616714

andreaB-104

Ciao Laura, grazie per la risposta.
Purtroppo neanche così funziona 🙁

Gennaio 21, 2025 a 5:01 pm #16620024

Laura
Supporter

Lingue: Inglese (English ) Italiano (Italiano )

Fuso orario: Europe/Rome (GMT+01:00)

A che ruoli stai cercando di dare questi permessi? Sono tutti registrati come traduttori?

Visto che dici che lo snippet funzionava, facendo il downgrade di WPML funziona nuovamente?

Gennaio 21, 2025 a 6:04 pm #16620154

andreaB-104

Volevo assegnare "questa abilità" a un paio di ruoli personalizzati, tutti registrati come traduttori.
Non saprei a che versione di WPML fare il downgrade, perché mi sono accorto di recente che non funzionava più, ma quello snippet l'avevo implementato più di un anno fa.
C'è modo di girare la questione agli sviluppatori?

Gennaio 22, 2025 a 8:40 am #16621503

Laura
Supporter

Lingue: Inglese (English ) Italiano (Italiano )

Fuso orario: Europe/Rome (GMT+01:00)

La questione è già girata agli sviluppatori, sono loro che mi hanno suggerito di provare un downgrade. Prova con la versione 4.6.0 che è uscita a gennaio 2023.

Visto che si tratta di codice custom e che quello che vuoi fare non è previsto da WPML non è detto che possiamo trovare una soluzione nell'immediato, si tratta di una feature request.

Gennaio 25, 2025 a 2:29 pm #16633625

andreaB-104

Ma basta che faccio il downgrade di WPML installando la versione 4.6.0 o devo fare anche il downgrade di String Translations, WooCommerce Multilingual & Multicurrency, Advanced Custom Fields Multilingual, WMPL SEO, ecc.?
Non è che poi riscontro problemi di altro tipo?

Gennaio 27, 2025 a 9:44 am #16636741

Laura
Supporter

Lingue: Inglese (English ) Italiano (Italiano )

Fuso orario: Europe/Rome (GMT+01:00)

Dovresti fare il downgrade di tutto, sì, e probabilmente anche di WordPress. Non so dirti se potresti avere problemi, te lo stiamo suggerendo non come soluzione al problema ma per cercare di capire perché ad un certo punto ha smesso di funzionare. L'ideale sarebbe farlo in un sito di staging.