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