当前浏览:首页 / WordPress函数 / get_user_meta()

get_user_meta( int $user_id, string $key = '', bool $single = false )

检索用户的用户meta字段

user_meta 用户meta


参数

$user_id

(int)(必填) 用户ID。

$key

(string)(可选) 要检索的meta key。默认情况下,返回所有键的数据。

默认值: ''

$single

(bool)(可选) 是否返回单个值。如果未指定$key,则此参数无效。

默认值: false


返回

(mixed) 如果$single为false,则为值数组。如果$single为true,则为meta数据字段的值。对于无效的$user_id(非数字、零值或负值),为false。如果传递了有效但不存在的用户ID,则为空字符串。


更多信息

请注意,如果meta值存在但为空,它将返回一个空字符串(或数组),就像meta值不存在一样。这可能会导致代码中出现意外行为。当您清空用户meta时,您的代码可以尝试使用add_user_meta,而不是update_user_meta认为用户尚未创建meta。



源码

查看源码 官方文档


更新日志

版本描述
3.0.0开始引入

使用示例

  • 示例1

    如果键不存在,函数将根据$single参数的值返回空字符串或空数组

  • 示例2

    获取所有meta数据
    此示例演示将$key参数保留为空,以便检索给定用户的所有meta数据(在本示例中为user_id = 9):

    <?php
      $all_meta_for_user = get_user_meta( 9 );
      print_r( $all_meta_for_user );
    ?>
    

    结果:

    Array ( [first_name] => Array ( [0] => Tom ) [last_name] => Array ( [0] => Auger)
    [nickname] => Array ( [0] => tomauger ) [description] => etc.... )

    注意:为了访问本例中的数据,您需要取消对每个键返回的数组的引用,如下所示:

    $last_name = $all_meta_for_user['last_name'][0];
    

    为了避免这种情况,您可能希望对get_user_meta()的结果运行一个简单的array_map(),以便只获取每个结果的第一个索引(从而模拟$single参数在提供$key时的作用:

      $all_meta_for_user = array_map( function( $a ){ return $a[0]; }, get_user_meta( $user_id ) );
      print_r( $all_meta_for_user );
    

    结果:

    Array ( [first_name] => Tom [last_name] => Auger [nickname] => tomauger [description] => etc.... )

    此外,如果要返回特定用户的所有meta并过滤掉空值,可以对上面array_map()的结果运行array_filter()

    // Get all user meta data for $user_id
    $meta = get_user_meta( $user_id );
    
    // Filter out empty meta data
    $meta = array_filter( array_map( function( $a ) {
    	return $a[0];
    }, $meta ) );
    
  • 示例3

    此示例返回并显示用户id 9的姓氏。

    <?php 
      $user_id = 9;
      $key = 'last_name';
      $single = true;
      $user_last = get_user_meta( $user_id, $key, $single ); 
      echo '<p>The '. $key . ' value for user id ' . $user_id . ' is: ' . $user_last . '</p>'; 
    ?>
    

    结果:

    The last_name value for user id 9 is Franklin

  • 示例4

    要检查返回值是否为空,即不存在,可以使用以下内容:

    global $current_user; 
    
    get_currentuserinfo();
    
    if ( $current_user ) {
    	$permission = get_user_meta( $current_user->ID, 'some_meta' , true );
    	
    	if ( ! empty( $permission ) ) {
    		// do stuff
    	}
    }
    // works for both array and single values
    
  • 示例5

    注意:在没有meta key的情况下执行get_user_meta( $user_id );时,值不会自动取消序列化。您需要maybe_unserialize()反序列化它们。