WordPress用户列表

从WordPress 3.1版本开始,加入了一个新的Class叫做WP_User_Query,通过该函数可以完成查询并返回用户数据的功能,其参数提供了定制化工能,例如排序字段、升序还是降序、用户角色等。

了解WP_User_Query

<?php $codex_users = new WP_User_Query( parameters ) ?> 

参数列表

  • blog_id (int) – multisite环境下的blog id. 默认是当前blog的id
  • role (string) – 用户角色
  • meta_key (string) – .
  • meta_value (string) – .
  • meta_compare (string) – .
  • include (array) – 用数组方式指定用户id,查询结果只包含指定的用户
  • exclude (array) – 用数组方式指定用户id,查询结果不包含指定的用户
  • search (string) –  输入一个字符串作为搜索关键词,开启搜索模式,可是使用*作为通配符,例如查询用户名包含john的用户-*john*,也可以是邮箱、网址等
  • orderby (string) – 排序字段,默认是login,可选值:nicename,email,url,registered或者前面都加上user_
  • order (string) – 默认为ASC,还可以是DESC
  • offset (int) -返回结果的偏移量(对分页有用)
  • number (int) – 一次返回多少条数据,分页时就是每一页显示的记录数
  • count_total (boolean) – true or false,默认为true,返回查询结果的总记录数
  • fields (all) – 返回wp_users表中的哪些字段,默认值是all,即返回所有的字段,还可以用数组方式指定只返回某些字段。如果值是all_with_meta,则返回WP_User objects数组
  • who (string) –

Examples

例如返回用户角色为editor的所有用户

$wp_user_search = new WP_User_Query( array( 'role' => 'editor' ) );
$editors = $wp_user_search->get_results();

与wp pagenavi合作输出分页用户列表

如果你的网站有成千上万个用户,全部在一个页面输出显然很不可取,幸好wp pagenavi支持WP_User_Query,下面这段代码会输出网站所有注册用户(包括管理员),一页显示20个用户。

<?php
    $paged = (get_query_var('paged')) ? get_query_var('paged') : 1;
    $paged -= 1;
    $limit = 20;
    $offset = $paged * $limit;

    $args = array(
        'number' => $limit,
        'offset' => $offset,
    );

    // Create the WP_User_Query object
    $user_query = new WP_User_Query($args);

    // Get the results
    $authors = $user_query->get_results();

    if ($authors): ?>
        <div class="clearfix" id="staffmembers"><?php foreach ($authors as $author) : ?><a class="author" href="<?php echo get_author_posts_url($author->ID); ?>"><?php echo get_avatar($author->ID, 96); ?><?php echo $author->display_name; ?></a> <?php endforeach; ?></div>
    <?php else: ?>
        <div class="post">Sorry, no posts matched your criteria.</div>
    <?php endif; ?>
        
    <?php
    wp_pagenavi(array(
        'query' => $user_query,
        'type' => 'users'
    ));
?>
  • 创建一个WP_User_Query的实例$user_query,并获取查询结果
  • 通过foreach循环输出每个用户,你可以获取每个用户的ID,有了用户ID,你可以输出任何你想输出的用户信息
  • 将$user_query作为参数传递给wp_pagenavi,让wp_pagenavi对用户查询进行分页,默认是对$wp_query分页

自定义一个page模板,将这段代码放进去,你就可以轻松输出注册用户的信息,做一个带有分页的会员列表页面。

2条留言

  1. […] 该方法不仅适用于主循环,稍微改一下还可以用于自定义查询。例如文章《利用WP User Query+WP Pavenavi制作会员列表》中提到用wp pagevani实现WP_User_Query的分页,其实用上面的代码一样可以实现,代码如下 […]

评论功能已关闭