public static function get_all_user_meta( $user_ids = array() ) {
global $wpdb;
foreach ($user_ids as $user_id) {
$meta_sql = $wpdb->query( $wpdb->prepare( "SELECT meta_key, meta_value FROM {$wpdb->usermeta} WHERE user_id = %d", $user_id));
$data = array();
foreach ($wpdb->last_result as $k => $v) {
$data[$v->meta_key] = $v->meta_value;
}
}
return $data;
}
它接受分页查询的ID数组。一次8个。 $ data只返回一个数组,而不是它应该返回的八个数组。
此函数的目的是从同一列中选择多个条目并为它们指定正确的名称,然后在返回之前将它们分别附加到现有数组。
答案 0 :(得分:4)
尝试
foreach ($wpdb->last_result as $k => $v) {
$data[$v->meta_key][] = $v->meta_value;
}
以上
$data = array();
在第一个循环之外。
您正在获取不同用户的meta_key和值,这可能是具有相同元键和不同值的不同用户。 所以我建议使用返回数组格式
foreach ($wpdb->last_result as $k => $v) {
$data[$user_id][$v->meta_key] = $v->meta_value;
}
以下是元键first_name可与多个用户关联的示例
select * from wp_usermeta where meta_key = 'first_name' limit 5 ;
+----------+---------+------------+------------+
| umeta_id | user_id | meta_key | meta_value |
+----------+---------+------------+------------+
| 9 | 2 | first_name | Abhik |
| 21 | 3 | first_name | John |
| 37 | 4 | first_name | |
| 55 | 5 | first_name | Ravi |
| 68 | 6 | first_name | Samual |
+----------+---------+------------+------------+