5ucms论坛

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 9110|回复: 0
打印 上一主题 下一主题

[钩子/函数] get_user_meta() 获取用户自定义字段信息

[复制链接]

670

主题

785

帖子

8228

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
8228
跳转到指定楼层
楼主
发表于 2021-6-3 17:20:26 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
方法简述
将给定用户的单个属性字段或者所有属性字段从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的姓氏并展示出来。

  1. <?php
  2.   $user_id = 9;
  3.   $key = 'last_name';
  4.   $single = true;
  5.   $user_last = get_user_meta( $user_id, $key, $single );
  6.   echo '<p>The '. $key . ' value for user id ' . $user_id . ' is: ' . $user_last . '</p>';
  7. ?>
复制代码


用户ID为9的姓氏为Franklin。

获取所有配置属性
这个例子示范的是当设置$key这个参数为空,来获取指定用户的所有配置属性(这个例子指定用户ID为9):

  1. <?php
  2.   $all_meta_for_user = get_user_meta( 9 );
  3.   print_r( $all_meta_for_user );
  4. ?>
复制代码


结果:

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参数设置了的前提下):

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

  2.   print_r( $all_meta_for_user );
复制代码


结果:

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

另外,如果你想获取用户所有的配置属性,并且过滤掉空值,可以使用array_filter方法来进行过滤:

  1. // Get all user meta data for $user_id
  2. $meta = get_user_meta( $user_id );

  3. // Filter out empty meta data
  4. $meta = array_filter( array_map( function( $a ) {
  5.     return $a[0];
  6. }, $meta ) );
复制代码


提示
如果要获取的值是存在的,但它是一个空值,它会返回一个空字符串或者是数组,就好像这个配置属性值不存在一样。这个现象可能会引发一些异常的表现,也就是当你设置空的用户配置属性值的时候。这个时候就可以尝试使用add_user_meta来替代update_user_meta来防止这种设置空值的现象。我认为get_user_meta应该对于不存在的配置属性返回空值会更合适一点。

源文件
get_user_meta()看这里 wp-includes/user.php.
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|5ucms.com

GMT+8, 2024-4-24 12:51 , Processed in 0.187500 second(s), 29 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表