Est-il possible de renommer le nom du rôle utilisateur sans plug-in?


26

Est-il possible de renommer un nom de rôle d'utilisateur via un hook, au lieu d'utiliser un plugin?

modifier

Par exemple, administrator»owner


Pourriez-vous nous expliquer ce que vous voulez réaliser?
BjornW

renommer le nom du rôle utilisateur, c'est tout. par exemple, administrateur -> propriétaire
Sean Lee

Réponses:


44
function change_role_name() {
    global $wp_roles;

    if ( ! isset( $wp_roles ) )
        $wp_roles = new WP_Roles();

    //You can list all currently available roles like this...
    //$roles = $wp_roles->get_names();
    //print_r($roles);

    //You can replace "administrator" with any other role "editor", "author", "contributor" or "subscriber"...
    $wp_roles->roles['administrator']['name'] = 'Owner';
    $wp_roles->role_names['administrator'] = 'Owner';           
}
add_action('init', 'change_role_name');

http://www.garyc40.com/2010/04/ultimate-guide-to-roles-and-capabilities/


Je n'ai pas pu faire fonctionner ça. Indépendamment de ce que je fais, cela s'appelle toujours «Abonnés» dans le processus de création de backend. Il semble que cela $wp_rolesait maintenant une [role_objects]partie de son tableau.
Zeth

Cela a fait quelque chose de très étrange. Cela n'a affecté que la première lettre ("Odministrator")!
Mark

3

Une solution simple serait d'ajouter simplement un rôle d'utilisateur à l'aide de add_rolecette façon, vous pouvez le nommer comme vous le souhaitez et ajouter les capacités que vous souhaitez. http://codex.wordpress.org/Function_Reference/add_role


J'ai essayé d'éviter cela, mais je suppose que c'est la façon la plus propre de se passer de plugin.
Sean Lee

2

En fait, il existe de nombreuses façons d'y parvenir:

Avec pur php et mysql, vous pouvez modifier l'entrée sérialisée dans la base de données. En effet, Wordpress stocke le tableau sérialisé de rôles dans une wp_optionstable.

Alors:

  1. Récupérez le tableau sérialisé:
    SELECT option_value as serialized_string FROM wp_options WHERE option_name = 'wp_user_roles';
  2. Annuler la sérialisation de la chaîne - php: $rolesArray = unserialize($serialized_string)
  3. Modifiez le nom du rôle - php: $rolesArray['role_key']['name'] = "New name"
  4. Sérialiser le tableau - php: echo serialize($rolesArray)
  5. Remplacer le option_valuecontenu de la base de données par la sortie du point précédent

Si vous vous sentez en confiance avec Wordpress, vous pouvez même utiliser le Wordpress REPL intégré dans wp-cli pour récupérer la valeur stockée avec get_option('wp_user_roles')puis utiliser update_optionpour la mettre à jour.

Et (toujours) n'oubliez pas de sauvegarder la base de données avant la manipulation des options;)


Sinon, si vous ne vous souciez pas de la valeur de role_key…

… Il est très facile d'y parvenir avec wp-cli :

  1. dupliquer le rôle existant - $ wp role create new_role 'New Role' --clone=old_role
  2. supprimer l'ancien - $ wp role delete old_role
  3. associez ensuite new_role aux utilisateurs.
  4. éventuellement répéter les étapes 1 et 2 jusqu'à old_role = new_role

1

Vous pouvez créer un fichier de localisation personnalisé. Obtenez ce fichier: http://svn.automattic.com/wordpress-i18n/pot/trunk/wordpress.pot et modifiez-le à l'aide de l'outil PoEdit (par exemple). À l'étape suivante, enregistrez le fichier de localisation en en_GB.mo (ou autre) et modifiez le fichier wp-config:

define ("WPLANG", "en_GB");


1
J'ai déjà essayé cette méthode, mais certains menus déroulants n'ont pas été traduits.
Sean Lee

0

Vous pouvez le modifier directement dans votre base de données et il sera modifié en permanence pour votre site Web. Voici où WP conserve les rôles d'utilisateur

SELECT * from blog_options WHERE option_name = 'blog_user_roles'
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.