如何在管理员更新用户角色时运行MySQL查询?

时间:2016-07-11 作者:João Capinha

我需要在管理员更改管理面板中的用户角色时运行查询。现在,这是我的代码:

add_action( \'set_user_role\', \'my_function\' ); function my_function ($user_id){ $user = new WP_User( $user_id ); global $wpdb; $wpdb->query(" "); }

这不起作用。所以我的问题是,当更新用户供应商时,这是否是运行查询的正确挂钩。如果是,我是否获得了正确的用户id?

1 个回复
SO网友:Owais Alam

您走错了方向,在从后端更改管理员时,无法获取用户角色。您可以通过调用get\\u role()来检索当前用户的角色对象,但这是一个对象,而不是角色名称的字符串。

function get_user_role($uid) {
global $wpdb;
$role = $wpdb->get_var("SELECT meta_value FROM {$wpdb->usermeta} WHERE meta_key = \'wp_capabilities\' AND user_id = {$uid}");
  if(!$role) return \'non-user\';
$rarr = unserialize($role);
$roles = is_array($rarr) ? array_keys($rarr) : array(\'non-user\');
return $roles[0];
}

相关推荐

在参数中对关系使用META_QUERY

我找到了这本指南,我正在遵循它:https://rudrastyh.com/wordpress/meta_query.html但我发现它不适用于高级自定义字段的关系。为什么?这是我的代码:$args=array( \'post_type\' => \'post\', \'post_status\' => \'publish\', \'posts_per_page\' => -1, \'meta