从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模板,将这段代码放进去,你就可以轻松输出注册用户的信息,做一个带有分页的会员列表页面。
其实wp是万能的。