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

Sean Lee
fonte
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/

Ján Bočínec
fonte
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
3

Uma solução simples seria adicionar apenas uma função de usuário add_role, para que você possa nomeá-la como quiser e adicionar os recursos que desejar. http://codex.wordpress.org/Function_Reference/add_role

Wyck
fonte
Tentei evitar isso, mas acho que é a maneira mais limpa de fazer sem o plugin.
21711 Sean Lee
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
Dharma
fonte
1

Você pode criar um arquivo de localização personalizado. Obtenha este arquivo: http://svn.automattic.com/wordpress-i18n/pot/trunk/wordpress.pot e edite usando a ferramenta PoEdit (por exemplo). Na próxima etapa, salve o arquivo de localização como en_GB.mo (ou outro) e edite o arquivo wp-config:

define ("WPLANG", "en_GB");

czepol
fonte
11
Já tentei esse método, mas alguns menus suspensos não foram traduzidos.
21711 Sean Lee
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'
artnikpro
fonte