Na verdade, existem muitas maneiras de conseguir isso:
Com pure php e mysql você pode editar a entrada serializada no banco de dados. De fato, o Wordpress armazena a matriz serializada de funções na tabela wp_options
.
Então:
- Buscar o array serializado:
SELECT option_value as serialized_string FROM wp_options WHERE option_name = 'wp_user_roles';
- Desserializar a string - php:
$rolesArray = unserialize($serialized_string)
- Altere o nome da função - php:
$rolesArray['role_key']['name'] = "New name"
- Serializar de volta a matriz - php:
echo serialize($rolesArray)
- Substitua o conteúdo do db
option_value
pela saída do ponto anterior
Se você se sentir confiante com o Wordpress, você pode até usar o REPL incorporado do Wordpress em wp-cli para buscar o valor armazenado com get_option('wp_user_roles')
e, em seguida, use update_option
para atualizá-lo.
E (sempre) lembre-se de fazer o backup do banco de dados antes da manipulação das opções;)
Caso contrário, se você não se importa com o valor de role_key…
… é muito fácil conseguir isso com wp-cli :
- duplique a função existente -
$ wp role create new_role 'New Role' --clone=old_role
- exclua o antigo -
$ wp role delete old_role
- associe o new_role ao (s) usuário (s).
- eventualmente repita os passos 1 e 2 até old_role = new_role