Je crée une fonction WordPress pour éditer le nom du rôle
function change_role_name($role_name, $new_role_name, $display_name) {
global $wp_roles;
if ( ! isset( $wp_roles ) )
$wp_roles = new WP_Roles();
$role =& get_role($role_name);
$wp_roles->roles[$role]['name'] = $new_role_name; //not working for sa
$wp_roles->role_names[$role] = $display_name;
}
problème ici, il ne change pas le nom de l'étiquette de rôle
Ces noms sont stockés dans l'option wp_user_roles
dans la table de la base de données wp_options
.
Donc, ce qui suit va changer le nom du rôle subscriber
:
$val = get_option( 'wp_user_roles' );
$val['subscriber']['name'] = 'PeDeBoi';
update_option( 'wp_user_roles', $val );
Apparemment, ceci est inoffensif, mais une mise en garde caveat ...
Dans votre code, $wp_roles->roles[$role]['name'] = $new_role_name;
ne fonctionne pas car il devrait être:
$wp_roles->roles[$role_name]['name'] = $new_role_name;
Et $display_name
n'a pas beaucoup de sens.