web-dev-qa-db-fra.com

éditer le nom d'affichage du rôle et le nom de l'étiquette sans plugins

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

1
Gerald

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.

2
brasofilo