按元键和元值列出用户

时间:2015-04-14 作者:LBF

以下函数将根据用户的元数据显示用户列表:

<?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
}
?>    

1 个回复
最合适的回答,由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
}

结束

相关推荐

更改修订版查看器管理页面revision.php中的某些语言

我有一个自定义的post类型,其中术语“post”是irelevent。我通过各种钩子成功地将“post”的所有引用更改为主post编辑页面中的其他内容。我突然在自定义帖子中启用了修订支持,然后意识到修订页面上的一些文本需要更新。不过,我还没有找到一种快速且相当简单的方法来实现这一点。这真的很小,比如页面左上角的链接,当前状态是“返回到post editor”。有什么想法吗?