Existe maneira de renomear o nome da função de usuário sem plug-in?


26

Existe alguma maneira de renomear um nome de função de usuário via gancho, em vez de usar o plugin?

Editar

Por exemplo, administrator»owner


Você poderia elaborar o que deseja alcançar?
BjornW

renomear o nome da função de usuário, é isso. por exemplo, administrador -> proprietário
Sean Lee

Respostas:


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/


Não consegui fazer isso funcionar. Independentemente do que eu faça, ainda será chamado de 'Assinantes' no processo de criação de back-end. Parece que $wp_rolesagora faz [role_objects]parte de sua matriz.
Zeth

Isso fez algo muito estranho. Afetou apenas a primeira letra ("Odministrator")!
Mark


2

Na verdade, existem muitas maneiras de conseguir isso:

Com php e mysql puro, você pode editar a entrada serializada no banco de dados. De fato, o Wordpress armazena a matriz serializada de papéis na wp_optionstabela.

Tão:

  1. Busque a matriz serializada:
    SELECT option_value as serialized_string FROM wp_options WHERE option_name = 'wp_user_roles';
  2. Deserialize a string - php: $rolesArray = unserialize($serialized_string)
  3. Mude o nome da função - php: $rolesArray['role_key']['name'] = "New name"
  4. Serialize de volta a matriz - php: echo serialize($rolesArray)
  5. Substitua o option_valueconteúdo db pela saída do ponto anterior

Se você se sentir confiante com o Wordpress, pode até usar o Wordpress REPL incorporado no wp-cli para buscar o valor armazenado get_option('wp_user_roles')e usá update_option-lo para atualizá-lo.

E (sempre) lembre-se de fazer backup do banco de dados antes da manipulação das opções;)


Caso contrário, se você não se importa com o valor role_key…

… É muito fácil conseguir isso com o wp-cli :

  1. duplicar a função existente - $ wp role create new_role 'New Role' --clone=old_role
  2. excluir o antigo - $ wp role delete old_role
  3. em seguida, associe new_role ao (s) usuário (s).
  4. eventualmente repita as etapas 1 e 2 até old_role = new_role


0

Você pode editá-lo diretamente no seu banco de dados e ele será editado permanentemente para o seu site. Aqui é onde o WP mantém as funções de usuário

SELECT * from blog_options WHERE option_name = 'blog_user_roles'
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.