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

评论

您能详细说明您想要实现的目标吗?

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

#1 楼

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]部分。

–泽斯
19年3月16日在16:06

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

–马克
19年4月4日在16:19

#2 楼

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

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

因此:


获取序列化的数组:SELECT option_value as serialized_string FROM wp_options WHERE option_name = 'wp_user_roles';

反序列化字符串– php:$rolesArray = unserialize($serialized_string)

更改角色名称– php:$rolesArray['role_key']['name'] = "New name"

序列化数组– php:echo serialize($rolesArray)

替换数据库option_value内容与上一点的输出内容

如果您对Wordpress充满信心,甚至可以使用wp-cli中的嵌入式Wordpress REPL通过get_option('wp_user_roles')获取存储的值,然后使用update_option进行更新。 br />
(总是)记得在选项操作之前备份数据库;)


否则,如果您不在乎role_key的值…
< br…使用wp-cli可以很容易地实现这一目标:


复制现有角色– $ wp role create new_role 'New Role' --clone=old_role

删除旧角色– $ wp role delete old_role

,然后将new_role与用户关联。
最终重复步骤1和2,直到old_role = new_role


#3 楼

一个简单的解决方案是只使用add_role添加一个用户角色,这样您就可以为它命名任意名称,并添加所需的任何功能。 >

评论


试图避免这种情况,但是我想这是没有插件的最干净的方法。

–Sean Lee
2011年7月15日在22:16

#4 楼

如果您使用的是4.7及更高版本的WP版本,则可以使用wp_roles_init操作来完成此操作,例如:
 add_action( 'wp_roles_init', static function ( \WP_Roles $roles ) {
    $roles->roles['administrator']['name'] = 'Owner';
    $roles->role_names['administrator'] = 'Owner';
} );
 


#5 楼

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

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

评论


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

–Sean Lee
2011年7月15日在22:15

#6 楼

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

SELECT * from blog_options WHERE option_name = 'blog_user_roles'