我正在尝试查询WP用户并按billing_state
(一个自定义的元键/值)对它们进行分组,但是我得到了一些意外的结果,它给了我一些空的选项,但每个结果只返回一个结果billing_state
。
基于对SO的研究,建议我查询所有用户,然后创建一个新数组,在其中可以将状态设置为数组键,然后将用户对象设置为值。
这是我尝试过的:
add_shortcode('pro_pro_users','pro_pro_users');
function pro_pro_users(){
global $wpdb;
$user_query = new WP_User_Query( array( 'fields' => 'all' ) );
$users = $user_query->get_results();
if (!empty($users)) {
$usersByState = array();
foreach ($users as $user) {
$usersByState[get_user_meta($user->ID, 'billing_state', true)] = $user;
}
foreach ($usersByState as $k => $v){
if(!empty($v)) {
echo '<li><h5>' . $k . '</h5>';
echo '<ul>';
foreach ($v as $user) {
echo '<li><a href="' . get_author_posts_url($user->ID) . '">' . get_user_meta($user->ID, 'first_name', true) . ' ' . get_user_meta($user->ID, 'last_name', true) . ' (' . $user->display_name . ')</a></li>';
}
echo '</ul>';
echo '</li>';
}
}
echo '</ul>';
} else {
echo 'No users found';
}
}
这是正在发生的事情(请注意,空状态,每个状态仅一个状态,尽管我知道其中一些状态不止一个
我已检查:
https://codex.wordpress.org/Class_Reference/WP_User_Query https://codex.wordpress.org/Database_Description#Table:_wp_users https://codex.wordpress.org/Function_Reference/get_users https://wordpress.stackexchange.com/questions/105937/group-posts-by-meta-key https://wordpress.stackexchange.com/questions/205427/group-posts-by-attachment-meta-key https://usersinsights.com/wordpress-user-meta-query/
答案 0 :(得分:0)
引起我注意的是,以下代码将用找到的最后一个用户“覆盖”每个计费状态:
$usersByState = array();
foreach ($users as $user) {
$usersByState[get_user_meta($user->ID, 'billing_state', true)] = $user;
}
据我了解,您宁愿去:
$usersByState = array();
foreach ($users as $user) {
$billing_state = get_user_meta($user->ID, 'billing_state', true);
if ($billing_state)
$usersByState[$billing_state][] = $user;
}
因此,通过执行此操作,您将收集不同状态的多个用户。此外,这应注意您所描述的空“状态”。不确定是否可以完全解决您的问题,但这可能是完善功能的起点。