使WordPress成为核心

变更集50790


忽略:
时间戳:
2021年4月26日上午01:02:34(3年(之前)
作者:
彼得威尔逊公司
消息:

用户:跨功能共享当前用户实例。

共享WP_用户函数之间的当前用户实例获取用户数据()wp_get_current_user()。这两个函数都返回$当前用户当前用户的全局。

强制刷新$current_user(当前用户)内部全局清除用户缓存()立即重新发货wp_set_current_user()使用当前用户的ID。这可确保对当前用户权限或其他设置的任何更改都反映在全局中。作为副作用,这会立即重新武装当前用户的缓存。

Props chaion07、chriscct7、donmhico、hellofromtonya、lukecarbis、peterwilsoncc、rmccue、TimothyBlynJacobs。
修复#28020.

位置:
大旅行箱
文件夹:
3已编辑

图例:

未修改
补充
远离的
  • 主干/src/wp-includes/pluggable.php

    50781兰特 50790兰特  
    9292*@自2.8.0起
    9393*@自4.4.0起添加“ID”作为“$field”参数的“ID”别名。
     94*@since 5.8.0如果全局`$current_user`是要提取的用户,则返回全局`$current_user`。
    9495*
    9596*@param string$field用于检索用户的字段。id | id | slug | email |登录。
     
    9899     */
    99100函数get_user_by($field,$value){
     101全局$current_user;
     102
    100103$userdata=WP_User::get_data_by($field,$value);
    101104
    102105if(!$userdata){
    103106返回false;
     107        }
     108
     109if(WP_user的$current_user实例&&$current_user->ID===(int)$userdata->ID){
     110返回$current_user;
    104111        }
    105112
  • trunk/src/wp-includes/user.php

    50641兰特 50790兰特  
    15621562*@自3.0.0起
    15631563*@自4.4.0以来添加了“clean_user_cache”操作。
     1564*@since 5.8.0如果清除当前用户的用户缓存,则刷新全局用户实例。
     1565 *
     1566*@global WP_User$current_User保存用户数据的当前用户对象。
    15641567 *
    15651568*@param WP_User|int$User要从缓存中清除的用户对象或ID
    15661569 */
    15671570函数clean_user_cache($user){
     1571全局$current_user;
     1572
    15681573if(is_numeric($user)){
    15691574$user=新WP_user($user);
     
    15881593     */
    15891594do_action('clean_user_cache',$user->ID,$user);
     1595
     1596//如果清除当前用户,则刷新全局用户实例。
     1597if(get_current_user_id()==(int)$user->id){
     1598$user_id=(int)$user->id;
     1599$current_user=空;
     1600wp_set_current_user($user_id,'');
     1601    }
    15901602}
    15911603
  • trunk/tests/phpunit/tests/pluggable.php

    47938兰特 50790兰特  
    325325    }
    326326
     327    /**
     328*@门票28020
     329     */
     330公共函数test_get_user_by_should_return_same_instance_as_wp_get_current_user(){
     331//创建测试用户
     332$new_user=self::factory()->user->create(数组('role'=>'subscriber'));
     333
     334//将测试用户设置为当前用户
     335$current_user=wp_set_current_user($new_user);
     336
     337//使用Get_user_by()获取测试用户
     338$from_get_user_by=get_user_by('id',$new_user);
     339
     340$this->assertSame($current_user,$from_get_user_by);
     341    }
    327342}
注:请参见TracChangeset(跟踪变更集)获取有关使用变更集查看器的帮助。