方法简述
将给定用户的单个属性字段或者所有属性字段从user_meta
表查询出来。也曾可以使用get_metadata()
。这个方法替代了已经废弃的get_usermeta()
方法。
如何使用
<?php get_user_meta($user_id, $key, $single); ?>
参数
$user_id
(integer
) (required
) 要查询的用户ID。
默认: None
$key
(string
) (optional
) 存储在wp_usermeta
表中的指向要返回的配置值meta_key
的键。如果设置为空,会返回指定用户的所有配置属性。。
默认: (empty string
)
$single
(boolean
) (optional
)设置为true
则返回指定用户的属性值,如果为false
则返回一个数组。在$key
参数设置为空的情况下$singe
设置为何值不影响结果。
默认: false
返回值
(mixed)
如果$key
参数未设置或者$single
为false
,则返回一个数组。如果$single
设置为true
则返回一个meta_value
属性值。
注意
如果这个属性值不存在, 且$single
设置为true
那将返回一个空字符串。如果$single
设置为false
那么将返回一个空的数组。
示例
这个示例会返回用户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>';
?>
用户ID为
9
的姓氏为Franklin。
获取所有配置属性
这个例子示范的是当设置$key
这个参数为空,来获取指定用户的所有配置属性(这个例子指定用户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];
为了避免这么麻烦,你可以使用这个简单的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.... )
另外,如果你想获取用户所有的配置属性,并且过滤掉空值,可以使用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 ) );
提示
如果要获取的值是存在的,但它是一个空值,它会返回一个空字符串或者是数组,就好像这个配置属性值不存在一样。这个现象可能会引发一些异常的表现,也就是当你设置空的用户配置属性值的时候。这个时候就可以尝试使用add_user_meta
来替代update_user_meta
来防止这种设置空值的现象。我认为get_user_meta
应该对于不存在的配置属性返回空值会更合适一点。
源文件
get_user_meta()
看这里 wp-includes/user.php.
相关
add_user_meta(), delete_user_meta(), get_user_meta(), update_user_meta(), get_user_option(), delete_user_option(), update_user_option(),
Function Reference 索引看这里and Template Tags索引看这里.