是否可以在没有插件的情况下重命名用户角色名称?


26

无论如何,是否可以通过钩子而不是使用插件来重命名用户角色名称?

编辑

例如administrator»owner


您能详细说明您要实现的目标吗?
BjornW 2011年

重命名用户角色名称,就是这样。例如,管理员->所有者
Sean Lee

Answers:


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/


我无法使它正常工作。无论我做什么,它在后端创建过程中仍被称为“订户”。看起来$wp_roles现在已经有[role_objects]一部分数组了。
泽斯

这做了一些非常奇怪的事情。它只影响了第一个字母(“管理员”)!
Mark


2

实际上,有很多方法可以实现:

使用纯PHP和mysql,您可以在db中编辑序列化的条目。实际上,Wordpress将角色的序列化数组存储在wp_options表中。

所以:

  1. 获取序列化数组:
    SELECT option_value as serialized_string FROM wp_options WHERE option_name = 'wp_user_roles';
  2. 反序列化字符串– php: $rolesArray = unserialize($serialized_string)
  3. 更改角色名称– php: $rolesArray['role_key']['name'] = "New name"
  4. 序列化数组– php: echo serialize($rolesArray)
  5. 用上option_value一点的输出替换数据库内容

如果您对Wordpress充满信心,甚至可以使用wp-cli中嵌入式Wordpress REPL来获取存储的值,get_option('wp_user_roles')然后用于update_option更新它。

并且(总是)记住在操作选项之前备份数据库;)


否则,如果您不在乎role_key的值...

…使用wp-cli可以轻松实现:

  1. 复制现有角色– $ wp role create new_role 'New Role' --clone=old_role
  2. 删除旧的- $ wp role delete old_role
  3. 然后将new_role与用户相关联。
  4. 最终重复步骤1和2,直到old_role = new_role

1

您可以创建一个自定义的本地化文件。获取此文件:http : //svn.automattic.com/wordpress-i18n/pot/trunk/wordpress.pot并使用PoEdit工具进行编辑(例如)。在下一步中,将本地化文件另存为en_GB.mo(或其他),然后编辑wp-config文件:

定义(“ WPLANG”,“ en_GB”);


1
已经尝试过此方法,但是某些下拉菜单未翻译。
肖恩·李

0

您可以直接在数据库中对其进行编辑,并且将为您的网站进行永久性编辑。WP在这里保留用户角色

SELECT * from blog_options WHERE option_name = 'blog_user_roles'
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.