¿Hay alguna manera de cambiar el nombre del rol de usuario sin complemento?

26

¿Hay alguna forma de cambiar el nombre de un rol de usuario a través del enlace, en lugar de usar el complemento?

Editar

Por ejemplo, administrator»owner

Sean Lee
fuente
¿Podrías dar más detalles sobre lo que quieres lograr?
BjornW
cambiar el nombre del rol de usuario, eso es todo. por ejemplo, administrador -> propietario
Sean Lee

Respuestas:

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/

Ján Bočínec
fuente
No pude hacer que esto funcione. Independientemente de lo que haga, todavía se llama 'Suscriptores' en el proceso de creación del backend. Parece que $wp_rolesahora tiene una [role_objects]parte de su matriz.
Zeth
Esto hizo algo muy extraño. ¡Solo afectó a la primera letra ("Administrador")!
Mark
3

Una solución simple sería simplemente agregar un rol de usuario usando add_role, de esa manera puede nombrarlo como desee y agregar las capacidades que desee. http://codex.wordpress.org/Function_Reference/add_role

Wyck
fuente
Intenté evitar esto, pero supongo que es la forma más limpia de hacerlo sin el complemento.
Sean Lee
2

En realidad, hay muchas formas de lograrlo:

Con php y mysql puro , puede editar la entrada serializada en la base de datos. De hecho, Wordpress almacena la matriz serializada de roles en la wp_optionstabla.

Asi que:

  1. Obtener la matriz serializada:
    SELECT option_value as serialized_string FROM wp_options WHERE option_name = 'wp_user_roles';
  2. Deserializar la cadena - php: $rolesArray = unserialize($serialized_string)
  3. Cambiar el nombre del rol - php: $rolesArray['role_key']['name'] = "New name"
  4. Serializar de nuevo la matriz - php: echo serialize($rolesArray)
  5. Reemplace el option_valuecontenido de db con la salida del punto anterior

Si se siente seguro con Wordpress, incluso puede usar el REPL de Wordpress incrustado en wp-cli para obtener el valor almacenado get_option('wp_user_roles')y luego usarlo update_optionpara actualizarlo.

Y (siempre) recuerde hacer una copia de seguridad de la base de datos antes de la manipulación de opciones;)


De lo contrario, si no le importa el valor de role_key ...

… Es muy fácil lograr eso con wp-cli :

  1. duplicar el rol existente $ wp role create new_role 'New Role' --clone=old_role
  2. eliminar el viejo $ wp role delete old_role
  3. luego asocie new_role a los usuarios.
  4. eventualmente repita los pasos 1 y 2 hasta old_role = new_role
Dharma
fuente
1

Puede crear un archivo de localización personalizado. Obtenga este archivo: http://svn.automattic.com/wordpress-i18n/pot/trunk/wordpress.pot y edite con la herramienta PoEdit (por ejemplo). En el siguiente paso, guarde el archivo de localización como en_GB.mo (u otro) y edite el archivo wp-config:

define ("WPLANG", "en_GB");

czepol
fuente
1
Ya probé este método, pero algunos menús desplegables no se tradujeron.
Sean Lee
0

Puede editarlo directamente en su base de datos, y se editará permanentemente para su sitio web. Aquí es donde WP mantiene los roles de usuario

SELECT * from blog_options WHERE option_name = 'blog_user_roles'
artnikpro
fuente