在前面所有这些部分之后,我们已经完成了WP_Query
类的学习,但这并不意味着我们已经完成了该系列! 现在该开会WP_Query
的兄弟和姐妹课程了: WP_User_Query
, WP_Comment_Query
, WP_Meta_Query
和WP_Date_Query
。
在这一部分中,我们将学习使用WP_User_Query
类在WordPress中查询用户。
让我们开始!
什么是WP_User_Query?
您可能仅通过读取WP_User_Query
的名称即可了解其WP_User_Query
。 是的,没有人希望看到WP_User_Query
与“标签云”小部件一起工作-这是一个类,用于在WordPress中运行有关用户的查询。
让我们看看WordPress Codex对WP_User_Query
类的WP_User_Query
:
WP_User_Query
是在wp-includes/user.php
定义的类,它允许查询WordPress数据库表'wp_users
'和'wp_usermeta
'。 此类是在版本3.1中引入的,因此不建议使用WP_User_Search
类。
本质上,我们可以说“ WP_User_Query
是用户的WP_Query
”。 它与wp_users
和wp_usermeta
来查询用户及其元数据。
现在,让我们看看WP_User_Query
并了解WP_User_Query
的属性,方法和参数。 然后,我们将通过一些示例来了解其工作原理。
快速提示:我们在介绍WP_Query
类的属性和方法时已经介绍了这一点,但让我再次提醒一下:“属性”和“方法”仅是在内部定义的“变量”和“函数”一个PHP类。
WP_User_Query的属性
在WP_User_Query
类中只有七个属性需要学习。 请记住:这些不应该被用来改变它们的值。 您可以获取它们的值,但是最好不要更改它们。
$query_vars
此属性存储查询变量及其值的关联数组。
$results
此属性具有查询的找到的项目数(在这种情况下为用户)。
$query_fields
与以下属性类似,此属性存储返回字段的SQL子句。
$query_from
此属性存储查询的FROM
子句。
$query_where
此属性存储查询的WHERE
子句。
$query_orderby
此属性存储查询的ORDERBY
子句,并用于对返回的用户列表进行排序。
$query_limit
此属性存储查询的LIMIT
子句,用于限制返回的用户数。
WP_User_Query的方法
还记得WP_Query
类的方法吗? 好的,此类只有四个方法,它们的工作方式与WP_Query
的方法WP_Query
。 让我们快速了解为什么每个人都存在。
get()
方法
此方法只是从查询中获取查询变量。
set()
方法
与上面的相反,此方法设置查询变量而不是获取它。
get_results()
方法
与WP_Query
不同, WP_User_Query
类不适用于“循环”。 相反,您需要使用get_results()
方法来获取查询结果并对其进行处理。
get_total()
方法
这个小方法返回查询的项目总数(用户)。
WP_User_Query的参数
与WP_Query
类类似, WP_User_Query
具有您需要了解的参数。 不过,虽然WP_Query
有大量的参数(超过50个!), WP_User_Query
只有17参数担心和他们很相似,在那些WP_Query
,所以如果你熟悉的,它不应该学习这些会很麻烦。
-
blog_id
:一个整数,用于在多站点网络中指定博客的ID。 默认为当前博客。 -
role
:声明用户角色的字符串。 接受subscriber
,author
,contributor
,author
,editor
,administrator
以及任何自定义创建的用户角色。 -
include
:要包含在查询中的用户ID数组。 -
exclude
:要从查询中排除的用户ID数组。 -
search
:在wp_users
表的字段中search
的字符串值。 -
search_columns
:wp_users
表的列的数组。 接受ID
,user_login
,user_url
,user_email
和user_nicename
。 -
orderby
:用于说明如何对返回的用户进行排序的字符串。 接受ID
,display_name
,name
/user_name
,login
/user_login
,nicename
/user_nicename
,email
/user_email
,url
/user_url
,registered
/user_registered
,post_count
和meta_value
。 默认为login
。 -
order
:将字符串设置为升序(ASC
)或降序(DESC
)的字符串。 -
offset
:一个整数,用于指定要跳过的用户数。 -
number
:一个整数,用于设置要返回的用户数。 -
count_total
:一个布尔值(TRUE
/FALSE
),用于声明是否对找到的用户总数进行计数。 -
fields
:一个字符串或数组,用于确定要从wp_users
表中返回哪些字段。 -
who
:一个字符串(authors
或all
,这是默认值),用于说明要查询的用户。 -
meta_key
:用来声明自定义用户元字段密钥的字符串。 -
meta_value
:一个字符串,用于声明自定义用户元字段值。 -
meta_compare
:一个字符串,用于设置运算符以测试'meta_value'
参数。 接受'='
,'!='
,'>'
,'>='
,'<'
,'<='
,'LIKE'
,'NOT LIKE'
,'IN'
,'NOT IN'
,'BETWEEN'
,'NOT BETWEEN'
,'EXISTS'
和'NOT EXISTS'
。 默认为'='
。 -
meta_query
:一个数组,用于创建一个完整的元数据查询,使用类似于上面的键: -
key
:用于设置自定义字段键的字符串。 -
value
:用于设置一个或多个自定义字段值的字符串或数组。 -
compare
:用于设置比较运算符的字符串。 接受与上述meta_compare
相同的值。 -
type
:设置自定义字段类型的字符串。 接受NUMERIC
,BINARY
,CHAR
,DATE
,DATETIME
,DECIMAL
,SIGNED
,TIME
和UNSIGNED
。 默认为CHAR
。
-
尝试一些示例的WP_User_Query
现在我们已经了解了WP_User_Query
工作原理,让我们做一些例子来学习如何使用它。
列出除Lisa以外的所有编辑者
假设您想向读者列出您的编辑者,但是您要记住,您的一位编辑者Lisa已同意与您合作,但要匿名,因此您需要将其排除在“编辑者”列表之外。 这是构造查询的方式:
<?php
// Add Lisa's user id, 14, in an array.
$exclude_list = array( 14 );
$args = array(
'role' => 'Editor',
'exclude' => $exclude_list
);
// Custom query.
$my_user_query = new WP_User_Query( $args );
// Get query results.
$editors = $my_user_query->get_results();
// Check for editors
if ( ! empty( $editors ) ) {
echo '<ul class="editors-list">';
// Loop over editors.
foreach ( $editors as $editor ) {
// Get each editor's data.
$editor_info = get_userdata( $editor->ID );
// Show editor's name.
echo '<li>' . $editor_info->display_name . '</li>';
}
echo '</ul>';
} else {
// Display "no editors found" message.
echo __( 'No editors found!', 'tutsplus' );
}
?>
在作者中搜索Gmail用户
假设您要收集使用Gmail地址的作者的电子邮件地址。 这是您的工作:
<?php
// Setup arguments.
$args = array(
// Search for authors only.
'who' => 'authors',
// Search for email addresses ending with `@gmail.com`.
'search' => '*@gmail.com',
// Search the `email` field only.
'search_columns' => array( 'email' ),
// Return the `email` field only.
'fields' => 'email'
);
// Custom query.
$my_user_query = new WP_User_Query( $args );
// Get query results.
$gmailers = $my_user_query->get_results();
?>
包装一切
如您所见, WP_Query
和WP_User_Query
之间只有一些区别,并且这些区别实际上使WP_User_Query
更易于理解。 我希望我能帮助您了解这一整洁的WordPress类。
您对本文有什么要补充的吗? 在下面的评论部分与我们分享您的想法。 而且,如果您喜欢这篇文章,请不要忘记与您的朋友分享。
在本系列的下一部分见!
如果您对一些脚本和插件感兴趣,这些脚本和插件可以为您提供用户和会员系统的更高级功能,那么Envato Market上有很多有用的会员脚本项目集合。
翻译自: https://code.tutsplus.com/tutorials/mastering-wp_user_query--cms-23204