# Traduire un espace membre : contenus restreints par langue et par rôle

> Un espace adhérents multilingue avec des contenus réservés à certains rôles pose un problème rarement documenté : comment croiser restriction d'accès et traduction sans casser l'un ou l'autre.

- Auteur : Clément Hadrot
- Publié le : 2026-04-29
- Mis à jour le : 2026-04-29
- Catégorie : Multilingue
- URL : https://wpmoderne.dev.wordpress-developpement.fr/multilingue/traduire-espace-membre-langue-role/

## L’essentiel

- Le croisement rôle et langue crée seize combinaisons distinctes à tester
- La restriction devait s'appliquer par groupe de traduction, pas page par page
- Un adhérent sans accès ne doit voir aucune trace de contenu dans une autre langue

Une fédération professionnelle regroupant des indépendants et des entreprises adhérentes de plusieurs pays européens a ouvert un espace membres accessible en français, anglais, allemand et néerlandais, avec des contenus réservés selon le type d'adhésion : les indépendants accèdent à un socle commun, les entreprises adhérentes à un niveau accèdent à des ressources supplémentaires, et un troisième niveau réservé aux membres du conseil d'administration accède à des documents stratégiques. Ce croisement entre restriction de rôle et traduction, rarement documenté, a soulevé des problèmes que ni le plugin de restriction de contenu ni WPML seul ne résolvaient d'origine.

Cet article ne revient pas sur la gestion des rôles éditoriaux en tant que telle, déjà traitée par ailleurs, mais sur les choix retenus spécifiquement pour faire coexister restriction d'accès par rôle et traduction multilingue sur ce projet.

## Le problème de fond : deux systèmes de filtrage indépendants

Le plugin de restriction de contenu utilisé filtre l'affichage selon le rôle ou le niveau d'adhésion de l'utilisateur connecté, en s'appuyant sur des règles définies au niveau de chaque page ou d'une taxonomie dédiée. WPML, de son côté, filtre l'affichage selon la langue courante du site, indépendamment de tout rôle. Ces deux systèmes de filtrage fonctionnent chacun correctement pris isolément, mais ne communiquent pas nativement entre eux : rien n'empêche, par construction, qu'une page réservée aux membres du conseil d'administration existe en français avec la bonne restriction, mais que sa traduction allemande ait été créée sans que la restriction de rôle n'ait été reportée dessus.

## Cartographier les seize combinaisons

> L'essentiel à retenir : Le croisement rôle et langue crée seize combinaisons distinctes à tester ; La restriction devait s'appliquer par groupe de traduction, pas page par page ; Un adhérent sans accès ne doit voir aucune trace de contenu dans une autre langue

Avec quatre langues et quatre niveaux d'accès (public, indépendant, entreprise, conseil d'administration), le projet comptait potentiellement seize combinaisons à vérifier pour chaque page sensible. Plutôt que de tester au hasard, nous avons construit une matrice de test systématique, un compte utilisateur de démonstration étant créé pour chaque niveau d'accès, et chaque page stratégique étant contrôlée dans chacune des quatre langues avec chacun des quatre comptes.

| Niveau d'accès | FR | EN | DE | NL |
| --- | --- | --- | --- | --- |
| Public | Testé | Testé | Testé | Testé |
| Indépendant | Testé | Testé | Testé | Testé |
| Entreprise | Testé | Testé | Testé | Testé |
| Conseil d'administration | Testé | Testé | Testé | Testé |

Ce test systématique a révélé cinq incohérences sur les quarante-quatre pages sensibles du projet, toutes dues à des traductions créées avant la mise en place définitive des règles de restriction, la restriction n'ayant alors été appliquée que sur la page source française.

## La solution technique retenue : restreindre par groupe de traduction

Plutôt que d'appliquer la restriction page par page, ce qui obligeait à répéter la configuration à chaque nouvelle langue, la restriction a été rattachée au groupe de traduction WPML lui-même (le `trid` partagé entre toutes les versions linguistiques d'une même page), via un filtre personnalisé qui synchronise automatiquement le niveau de restriction de la page source vers l'ensemble de ses traductions :

```
add_action( 'save_post', function ( $post_id ) {
    $niveau_acces = get_post_meta( $post_id, '_niveau_acces_membre', true );

    $trid = apply_filters( 'wpml_element_trid', null, $post_id, 'post_page' );
    $traductions = apply_filters( 'wpml_get_element_translations', null, $trid, 'post_page' );

    foreach ( $traductions as $traduction ) {
        if ( $traduction->element_id !== $post_id ) {
            update_post_meta( $traduction->element_id, '_niveau_acces_membre', $niveau_acces );
        }
    }
} );
```

Ainsi, modifier le niveau d'accès sur la version française applique automatiquement la même restriction à ses traductions anglaise, allemande et néerlandaise, éliminant le risque d'oubli constaté lors de l'audit initial.

## Le cas des contenus partiellement traduits

Un dernier point délicat : que faire lorsqu'une page réservée existe en français mais que sa traduction allemande n'a pas encore été réalisée ? Le comportement retenu, après discussion avec le client, a été de ne jamais proposer de repli automatique vers la version française pour un contenu restreint : un adhérent allemand accédant à une ressource non encore traduite voit un message clair l'informant que la traduction est en cours, plutôt que du contenu en français inséré silencieusement, ce qui aurait pu laisser penser à une fuite d'accès entre niveaux d'adhésion s'il tombait sur un contenu d'un niveau supérieur mal traduit.

> Sur un espace à accès restreint, mieux vaut un message d'attente honnête qu'un repli de langue silencieux : la confusion entre absence de traduction et faille de sécurité coûte bien plus cher en confiance qu'un léger inconfort d'attente.

## En résumé

Croiser restriction de rôle et traduction ne pose pas de problème technique insurmontable, mais exige une vigilance méthodique que les deux systèmes, pris isolément, ne garantissent pas. La règle retenue sur ce projet — synchroniser automatiquement la restriction au niveau du groupe de traduction plutôt que page par page — s'est révélée être la seule approche fiable pour éviter les oublis constatés lors de l'audit initial, tout en restant simple à maintenir pour l'équipe éditoriale de la fédération.
