仅获取具有特定前缀的密钥的用户元

时间:2021-05-09 作者:Mitterrand Nkulu

有一个带有前缀my\\u theme的元键列表,这些元键由用户更新。我的问题是如何仅为带有My\\u主题前缀的键获取\\u user\\u meta。尝试了通配符,但无效。

get_user_meta( $user_id, \'my_theme%\', true  );

1 个回复
最合适的回答,由SO网友:Álvaro Franz 整理而成

没有本机WordPress函数可以实现这一点,但您可以获取给定用户ID的所有元键,然后过滤所需的元键。

下面是如何为给定的$user_id. 首先,您将获得所有用户元条目:

$all_meta = get_user_meta($user_id);
正如您在get_user_meta() docs, 因为我们要离开$key 参数为空,这将包含一个数组,其中包含给定用户的所有元条目,包括您正在查找的元条目。

然后,您可以使用PHP过滤生成的数组array_filter() 作用

$only_my_theme_meta = array_filter($all_meta, function($key){
    return strpos($key, \'my_theme\') === 0;
}, ARRAY_FILTER_USE_KEY);
还要注意,每个元素也是一个数组,在某些情况下,您可能希望取消对结果数组的引用,以便只获取每个结果的第一个索引:

$dereferenced_array = array_map(function( $a ){
return $a[0];
}, $only_my_theme_meta);

相关推荐

添加用户角色:预先保存在User-Meta中[已解决]

我在用户注册后添加一个操作,以根据users meta\\u值添加另一个用户角色。使用时:add_action(\'um_after_save_registration_details\', \'custom_after_new_user_register\', 10, 2); function custom_after_new_user_register($user_id) { $user = get_user_by(\'id\', $user_id); if