我在更新用户角色时遇到了一个问题,然后在代码后面的某个地方检查当前角色。
经过一整天的调试和一夜的休息,我偶然发现了它。
请参见以下示例:
// Get current user object
$user = wp_get_current_user();
// Set new role
$user->remove_role( \'member_pending\' );
$user->add_role( \'member\' );
// ... Later in another function
// Trying to get the updated role
$user = wp_get_current_user();
$role = $user->roles; // Returns "member_pending"
// Going through another hoop to get the role
$user = get_user_by(\'ID\', wp_get_current_user()->ID);
$role = $user->roles; // Return the correct role "member"
我也试过使用
wp_cache_flush()
使用前
wp_get_current_user()->roles
, 但它仍然显示了错误的角色。
就像我说的,我已经想出了如何“修复”这个问题,但由于我花了一整天的时间来解决这个问题,I want to actually understand why it happens.