Dies ist das technische Support-Forum für WPML – das mehrsprachige WordPress-Plugin.
Mitlesen können alle, doch nur WPML-Kunden können hier Fragen veröffentlichen. Das WPML-Team antwortet im Forum an 6 Tagen pro Woche, 22 Stunden am Tag.
| Sun | Mon | Tue | Wed | Thu | Fri | Sat |
|---|---|---|---|---|---|---|
| - | - | 9:00 – 18:00 | 9:00 – 18:00 | 9:00 – 18:00 | 9:00 – 18:00 | 9:00 – 18:00 |
| - | - | - | - | - | - | - |
Supporter-Zeitzone: America/Lima (GMT-05:00)
Schlagwörter: Custom Work, Documentation request
Dieses Thema enthält 7 Antworten, hat 0 voices.
Zuletzt aktualisiert von Andreas W. Vor 8 Stunden, 48 Minuten.
Assistiert von: Andreas W..
| Autor | Beiträge |
|---|---|
| November 13, 2025 um 11:28 a.m. #17574507 | |
|
alinaS-10 |
Background of the issue: Symptoms: Questions: |
| November 13, 2025 um 4:46 p.m. #17576243 | |
|
Andreas W. WPML-Unterstützer seit 12/2018 Sprachen: Englisch (English ) Spanisch (Español ) Deutsch (Deutsch ) Zeitzone: America/Lima (GMT-05:00) |
Hallo, In WPML hat jeder Admin generell Zugriff auf alle Übersetzungen. Dokumentation: Alle Rollen, die nicht auf Admin zutreffen, haben eingeschränkte Zugriffsrechte und können unter WPML > Übersetzungs-Dashboard > Übersetzer eingetragen werden, um als Übersetzer Jobs unter WPML > Übersetzungen abrufen zu können oder um als Übersetzungs-Manager Jobs zu erstellen und zuzuweisen. Nutzer die nicht Admin sind, können die Übersetzungen nicht direkt in den Seiten- oder Beitragslisten oder vom WordPress-Editor aus abgrufen. Um Nutzern, die nicht Admin sind, die gleichen Möglichkeiten wie einem Admin zu ermöglichen, muss die WordPress-Capability manage_options gegeben sein, aber das würde ebenfalls bedeuten, dass diese Nutzer dann Zugriff auf alle Optionen in WordPress haben. Die programmatische Zuweisung von Rollen wäre wie folgt technisch möglich: Quelle: WP_Role::add_cap() – Method | Developer.WordPress.org Beispiel:
/* Any users apart from Admins or Subscribers will be Translation Managers and Translators. */
function wpml_custom_assign_capability() {
$users = get_users();
foreach ( $users as $user ) {
if ( ! in_array( 'subscriber', $user->roles ) && ! in_array( 'admin', $user->roles )) {
// add as translation manager
$user->add_cap( 'wpml_manage_translation_management' );
// add as translator
$user->add_cap( 'translate' );
}
}
}
add_action( 'init', 'wpml_custom_assign_capability' );
Ein derartiges Snippet kann man kurzzeitig in einem Code Snippet Plugin oder der functions.php eines Themes hinterlegen. Sobald das Backend danach erneut geladen wird, sollten die Rollen angepasst werden. Danach sollte das Snippet wieder entfernt werden. Mit freundlichen Grüßen |
| November 14, 2025 um 9:36 a.m. #17578085 | |
|
alinaS-10 |
Vielen Dank für die Rückmeldung. Diese Lösung hatten wir bereits getestet, die Capability wird den Benutzern dadurch auch wie gewünscht zugeordnet. Allerdings führt dies nicht dazu,dass sie Übersetzungen vornehmen dürfen. |
| November 14, 2025 um 3:40 p.m. #17579807 | |
|
Andreas W. WPML-Unterstützer seit 12/2018 Sprachen: Englisch (English ) Spanisch (Español ) Deutsch (Deutsch ) Zeitzone: America/Lima (GMT-05:00) |
Ein Übersetzungmanager, der kein Adminkonto hat, kann unter WPML > Translation Dashboard Aufträge erstellen, welche dann unter WPML > Übersetzungen aufgerufen werden können. Der Übersetzungsmanager kann sich diese Aufträge auch selbst zuweisen. Funktioniert dies nicht wie erwartet? |
| November 17, 2025 um 3:08 p.m. #17584692 | |
|
alinaS-10 |
Wir haben die Seite geprüft, und mit Nutzerberechtigung sehen wir leider keine Option eine Übersetzung als Job zu erfassen. |
| November 18, 2025 um 8:08 a.m. #17586622 | |
|
Andreas W. WPML-Unterstützer seit 12/2018 Sprachen: Englisch (English ) Spanisch (Español ) Deutsch (Deutsch ) Zeitzone: America/Lima (GMT-05:00) |
Die Berechtigung, von einer Seite / einem Beitrag aus ist nur für Admins möglich, bzw. kann nur dann ermöglicht werden, wenn die Nutzer die WordPress Capability "manage_options" haben. |
| November 18, 2025 um 2:57 p.m. #17588636 | |
|
alinaS-10 |
Vielen Dank, dadurch werden User nun als Translator hinzugefügt. Sobald sie sich dann selbst eine Sprache hinzufügen, können sie auch Dokumente für die entsprechende Sprachversion zur Übersetzung kopieren. Die letzte offene Frage wäre dann noch, ob man die Sprachversionen selbst auch noch automatisch zuweisen könnte. Ein Versuch über eine Funktion wpml_add_user_as_translator schlägt fehl, weil es diese offenbar nicht gibt. Unser aktuelles Code-Beispiel sieht wie folgt aus: public function updateUserCaps($user_login, $user) { if (array_intersect($user_roles, $backend_roles) && class_exists('SitePress')) { // WPML-/TM-relevante Capabilities // Zugriff auf Translation Management / Sprachenverwaltung $user_obj = new WP_User($user->ID); |
| November 19, 2025 um 1:22 p.m. #17591792 | |
|
Andreas W. WPML-Unterstützer seit 12/2018 Sprachen: Englisch (English ) Spanisch (Español ) Deutsch (Deutsch ) Zeitzone: America/Lima (GMT-05:00) |
Es handelt sich um Metainformation auf der wp_usermeta Tabelle. Man kann in diese mit Standard-WordPress-Methoden eingreifen. Beispiel:
/**
* Hook to assign WPML language pairs to translators.
* Add this to your theme's functions.php
*/
add_action( 'init', function() {
// Only run if WPML is active
if ( ! class_exists( 'SitePress' ) ) {
return;
}
// Example: assign English -> German and German -> English
$user_id = 123; // Replace with the WordPress user ID of your translator
// Fetch existing pairs
$pairs = get_user_meta( $user_id, 'wp_language_pairs', true );
// If empty or not an array, initialize
if ( empty( $pairs ) || ! is_array( $pairs ) ) {
$pairs = [];
}
// Add English -> German
if ( ! isset( $pairs['en']['de'] ) ) {
$pairs['en']['de'] = 1;
}
// Add German -> English
if ( ! isset( $pairs['de']['en'] ) ) {
$pairs['de']['en'] = 1;
}
// Save back (WPML expects serialized array)
update_user_meta( $user_id, 'wp_language_pairs', $pairs );
});
Diese WordPress-Hook, kann in die functions.php des Themes oder einem Code Snippet Plugin eingefügt werden, um Übersetzern programmatisch WPML-Sprachpaare zuzuweisen. Dieser Hook bewirkt Folgendes: - Sie wird nur ausgeführt, wenn WPML (SitePress) aktiviert ist. - Sie liest die Benutzermetadaten wp_language_pairs sicher. - Sie fügt Sprachpaare hinzu oder aktualisiert sie. - Sie serialisieren den Array zurück in das von WPML erwartete Format. Unter $user_id = 123; muss die ID des Benutzers eingegeben werden. Der Code beim erneuten Laden das Backends ausgeführt und sollte danach entfernt werden. |

