以下函数将根据用户的元数据显示用户列表:
<?php function get_users_by_meta_data( $meta_key, $meta_value ) {
$user_query = new WP_User_Query(
array(
\'meta_key\' => $meta_key,
\'meta_value\' => $meta_value
)
);
$users = $user_query->get_results();
return $users;
} ?>
我使用这样的函数,“school\\u division”是meta\\u键,“Richmond”是meta\\u值:
<h2>REGION 2</h2>
<ul>
<?php foreach( get_users_by_meta_data( \'school_division\', \'Richmond\') as $user ) { ?>
<li><?php echo $user->first_name; ?> <?php echo $user->last_name; ?></li>
<?php } ?>
</ul>
这正确地列出了里士满学校部门的所有用户。但我不想指定“Richmond”(meta\\u值)。我想遍历“school\\u division”meta\\u键中的每个meta\\u值,然后列出关联的用户。因此,输出类似于:
里士满
芝加哥的无名氏
Julie Doe纽约
Joe Doe,Jenny Doe,我想我需要添加另一个foreach循环。但我不知道如何重写函数来完成所有这些。也许我使用的函数是向后的。谢谢你的帮助!
******更新*********
我做了一些改变,希望更有效(?),下面是我的更新代码。它返回区域2中的所有用户,按其学校分区城市分组。
<?php function get_users_by_meta_data( $region, $division ) {
$user_query = new WP_User_Query(
array(
\'meta_query\' => array(
\'relation\' => \'AND\',
array(
\'key\' => \'REGION\',
\'value\' => $region,
),
array(
\'key\' => \'SCHOOL_DIVISION\',
\'value\' => $division
)
)
)
);
// Get the results from the query
$users = $user_query->get_results();
return $users;
}
?>
<h1> REGION 2</h2>
<?php
$cities = $wpdb->get_col("SELECT DISTINCT meta_value FROM $wpdb->usermeta WHERE meta_key = \'SCHOOL_DIVISION\'" );
foreach ( $cities as $city ) { ?>
<h2><?php echo $city; ?></h2>
<ul><?php
foreach ( get_users_by_meta_data( \'2\', $city ) as $user ) { ?>
<li><?php echo $user->first_name; ?> <?php echo $user->last_name; ?></li>
<?php } ?>
</ul><?php
}
?>
最合适的回答,由SO网友:butlerblog 整理而成
将城市/地区/任何东西放入一个可以循环的数组中怎么样?类似这样:
$cities = array( \'Richmond\', \'Chicago\', \'New York\' );
foreach ( $cities as $city ) { ?>
<h2><?php echo $city; ?></h2>
<ul><?php
foreach ( get_users_by_meta_data( \'school_division\', $city ) as $user ) { ?>
<li><?php echo $user->first_name; ?> <?php echo $user->last_name; ?></li>
<?php } ?>
</ul><?php
}