¿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


¿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/


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


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

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");


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'
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.