J'ai cherché dans les archives wpse pour résoudre mon problème mais je n'arrive pas à faire une chose pareille. J'ai construit ce code:
$args = array('fields' => 'all_with_meta');
$users = get_users($args);
foreach ($users as $user) {
echo esc_html( translate_user_role( ucfirst ( $user->roles[0] ) ) );
}
J'ai créé une print_r()
pour voir ce que je reçois. Tout va bien, je veux dire, je saisis le rôle de l'utilisateur, mais cela ne se traduit pas par lui-même. Dois-je faire plus?
Je pense que votre fonction de nidification est légèrement confuse; appelez ucfirst
après en traduisant, comme suit:
esc_html( ucfirst( translate_user_role( $user->roles[0] ) ) );
Mon mauvais, a complètement sauté un battement là. Vous devriez plutôt utiliser:
translate_user_role( $GLOBALS['wp_roles']->role_names[ $user->roles[0] ] );
Il n'est pas fiable de supposer que tous les noms d'affichage de rôle sont simplement ucfirst( $role key )
. Si cela ne fonctionne toujours pas, êtes-vous sûr que les fichiers de langue que vous utilisez ont entièrement traduit WordPress?
Veuillez noter que translate_user_role
ne fonctionne pas dans le front-end pour le moment.
Voici une solution de contournement, vous pouvez la placer dans votre thème:
add_action( 'init', 'load_admin_textdomain_in_front' )
function load_admin_textdomain_in_front() {
if ( ! is_admin() ) {
load_textdomain( 'default', WP_LANG_DIR . '/admin-' . get_locale() . '.mo' );
}
}