日星网 windows 中文论坛

 找回密码
 加入我们

QQ登录

只需一步,快速开始

查看: 345|回复: 0

Wordpress 如何得到用户列表

[复制链接]
发表于 2016-5-5 08:38:27 | 显示全部楼层 |阅读模式
WordPress 给用户提供了两个函数来请求用户列表,所以你可以不用去询问数据库。第一个函数是 “get_users_of_blog()” ,这个函数返回一个该博客所有用户的数组(如果你运行的是多站点的话,或者你可以通过传递一个 blog ID来获得)。第二个函数是 “get_users()”,返回的是一个用户列表,这个列表是基于传递到该函数的参数来做到的。这就减少了很多到数据库的SQL请求。

两个函数都会返回用户数据目标的数组。(除了 get_users() 这个函数,用它可以返回一个特定的字段。 )下一节我们会涉及更多关于用户目标的细节。

“get_users_of_blog()” 函数其实现在已经被弃用了。所以现在已经没有必要去用了,应该用 “get_users()” 来代替,下面给大家举一个例子:
  1. add_action( 'init', 'wpttuts_getusers' );

  2. function wpttuts_getusers() {
  3.     // Query criteria
  4.     $args = array (
  5.         'orderby' => 'url',
  6.         'order' => 'ASC'
  7.     );

  8.     // Get the users array
  9.     $users = get_users( $args );

  10.     // Loop through users, and display their home page
  11.     foreach( $users as $user) {
  12.         echo '<a href="' . $user->user_url . '">' . $user->user_url . '</a>';
  13.     }
  14. }
复制代码


这个函数元素有更多的选项。你可以在 Codex 页面里面找到一个完整的介绍。Codex page

  • blog_id 这个只在多站点才有效。默认值是现在博客的ID。
  • role 限制特定角色的返回用户。
  • include 一个用户ID的数组,接受请求返回值。
  • exclude 一个用户ID的数组,排除请求返回值。


WP_User 类别

WP_User 分类允许访问特定用户的内容,权限等。你需要一个用户ID、或者是用户名来创建一个新的类别;如果你是多站点,你同样需要一个 blog ID。

你可以给一个特定的用户初始化类别,然后把类别的内容 dump 给他。这只会显示内容本身,如果你需要得到用户类别里面的东西,这就会很有用。
  1. add_action( 'init', 'wptuts_wpuserclass' );

  2. function wptuts_wpuserclass() {
  3.     $user = new WP_User( 1 );
  4.     var_dump( $user );
  5. }
复制代码


下面的将是 WP_User 分类的属性和规则的一个总结:

WP_User 属性

  • data (用户数据的目标,例如用户名,密码,URL...)
  • ID (完整的用户 ID)
  • caps (数组)
  • roles (分配给用户的角色数组)
  • cap_key (字符串)
  • allcaps (包含用户所有属性的数组)
  • filter (空值)


WP_User 的规则

  • get_role_caps() 设定用户角色和所有用户的属性。
  • add_role() 给用户添加一个角色。
  • remove_role() 给用户去掉一个角色。
  • set_role() 给用户设定一个角色。这会去除前一个设定的角色。
  • add_cap() 给用户增加能力。
  • remove_cap() 去除用户的能力。
  • remove_all_caps() 去除用户的所有能力。
  • has_cap() 检查用户是否有某种权限或者角色。


用户的 Meta-Data

用户的 meta-data 是储存在 wp_usermeta 表的。是以密钥或者是一对值来储存的。而 Meta 值可以为任何一种形式的数据。这一对值不一定要是唯一的。你可以储存几对同样的值。

添加用户的Meta-Data

函数 add_user_meta() 是用来添加新的用户 metadata。如果成功添加的话,函数就会返回一个True,如果失败的话就会返回false。如之前提到的,是允许添加多个有相同值的meta数据的。如果你想让每个meta值都是唯一的话,那就把一下四个参数设为 true。
  1. add_action('init', 'wptuts_addusermeta');

  2. function wptuts_addusermeta() {
  3.     // Add multiple meta values with the same meta key
  4.     add_user_meta( 1, 'bookmarks', 'http://site1.com', false );
  5.     add_user_meta( 1, 'bookmarks', 'http://site2.com', false );
  6.     add_user_meta( 1, 'bookmarks', 'http://site3.com', false );
  7. }
复制代码



检索用户的 Meta-Data

函数 get_user_meta() 会返回一个 meta 值,这个值是基于用户的ID而传递给他的meta key。
  1. add_action('init', 'wptuts_getusermeta');
  2.    
  3. function wptuts_getusermeta() {
  4.     // Retrieves the user bookmarks
  5.     $bookmarks = get_user_meta( 1, 'bookmarks', false );
  6.     echo '<ul>';
  7.     foreach ( $bookmarks as $bookmark ) {
  8.         echo '<li><a href="' . $bookmark . '">' . $bookmark . '</a></li>';
  9.     }
  10.     echo '</ul>';
  11. }
复制代码



升级用户的 Meta-Data

函数 update_user_meta() 是用来升级单个的 meta 值的,如果同样的 meta key 有多个不同的值,之前也没有分配特定的值,那么新的值就会把久的那个值给覆盖掉。
  1. add_action('init', 'wptuts_updateusermeta');

  2. function wptuts_updateusermeta() {
  3.     // Updates a user bookmark
  4.     update_user_meta( 1, 'bookmarks', 'https://site2.com', 'http://site2.com' );
  5. }
复制代码



去除用户的 Meta-Data

delete_user_data() 这个函数是用了去除单个或者是多个已经存在的 meta 键值。如果你想要删除单个值的话,你应该在第三个参数上标注出来。
  1. add_action('init', 'wptuts_removeusermeta');

  2. function wptuts_removeusermeta() {
  3.     // Updates a user bookmark
  4.     delete_user_meta( 1, 'bookmarks', 'https://site2.com' );
  5. }
复制代码

您需要登录后才可以回帖 登录 | 加入我们

本版积分规则

手机版|小黑屋|日星网 ( 黑ICP备07001742号 )

GMT, 2018-11-19 07:08 AM , Processed in 0.017315 second(s), 22 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表