将“编辑者”角色设置为现有用户

时间:2019-04-19 作者:comdex

使用现有用户的用户ID,如何将角色更改为编辑器?

以下是我尝试的内容:

$wpdb->query("UPDATE wp_usermeta SET meta_value = \'a:1:{s:6:\\"editor\\";b:1;}\' WHERE user_id = \'$user_id\' AND meta_key = \'wp_capabilities\'");
不知道我做错了什么?

1 个回复
最合适的回答,由SO网友:nmr 整理而成

存储用户角色的Usermeta密钥在名称中有一个前缀,即wp-config.php 文件所以meta_key 将具有表单{prefix}_capabilities 您的查询应该如下所示

global $wpdb;
$wpdb->query(
        $wpdb->prepare(
          "UPDATE {$wpdb->usermeta} SET meta_value = \'a:1:{s:6:\\"editor\\";b:1;}\' WHERE user_id = %d AND meta_key = \'{$wpdb->prefix}capabilities\'",
          $user_id ) 
);
您不需要编写SQL查询。您可以通过获取WP_User 对象具有get_userdata 函数并使用该方法设置新角色set_role (或remove_roleadd_role 仅更改其中一个角色)。

$my_user_id = 12345;   // user ID for changing role
$my_user = get_userdata($my_user_id);
if ( $my_user instanceof WP_User )
    $my_user->set_role(\'editor\');

相关推荐

Get_Users Orderby Page

我一直在尝试使用codex修复排序问题get_users(), 但我似乎无法让它工作。抄本显示我可以设置\'orderby\' => \'post_count\', 但我想更改它,使其按页数排序。看起来应该是很容易改变的(page_count?), 但它不起作用。有人能给我一些建议吗?