我们即将结束本系列的“精通WP_Query
”,现在该介绍WP_Query
类的兄弟姐妹了。 在上一部分中,我们介绍了WP_User_Query
,在本文中,我们将学习WP_Comment_Query
类。
让我们开始!
什么是WP_Comment_Query?
在WordPress 3.1版中引入的WP_Comment_Query
类几乎完成了所有关于WordPress查询注释的繁重工作。 本质上,它允许查询两个数据库表wp_comments
和wp_commentmeta
。
下面是一个使用注释查询循环的骨架 WP_Comment_Query
类:
<?php
$args = array(
// Arguments for your query.
);
$comments_query = new WP_Comment_Query;
$comments = $comments_query->query( $args );
if ( $comments ) {
foreach ( $comments as $comment ) {
// Do what you do for each comment here.
}
} else {
// Display message because there are no comments.
}
?>
很简单,对不对? 几步后,我们将做一个示例,但让我们先了解一下。
WP_Comment_Query类的属性和方法
由于没有太多的属性(类的公共变量)和方法(类的公共函数),因此我将在两个迷你部分中对它们进行快速遍历。 开始了!
WP_Comment_Query的属性
与WP_Query
具有30多个属性(其中25个是条件标记的等效属性)不同, WP_Comment_Query
类只有五个属性:
-
$request
:包含SQL查询的字符串。 -
$meta_query
:借助WP_Meta_Query
类进行“元查询”的WP_Meta_Query
。 -
$date_query
:借助WP_Date_Query
类进行“日期查询”的WP_Date_Query
。 -
$query_vars
:查询变量的数组。 -
$comments
:查询中获取的注释数组。
WP_Comment_Query的唯一方法
是的,只有一种方法可以与WP_Comment_Query
类一起使用,并且该方法的名称为query()
。
query()
方法基本上使用下一节将要介绍的参数执行查询。 但是让我们看看使用此方法时在数组中得到什么:
-
comment_ID
:评论的ID。 -
comment_post_ID
:评论所针对的帖子的ID。 -
comment_author
:评论作者的姓名。 -
comment_author_email
:评论作者的电子邮件地址。 -
comment_author_url
:评论作者的网站URL。 -
comment_author_IP
:评论IP地址。 -
comment_date
:评论日期。 -
comment_date_gmt
:GMT时间格式的评论。 -
comment_content
:评论的内容。 -
comment_karma
:每个注释的未使用数据库字段,插件可以使用它来存储注释的业力。 -
comment_approved
:评论的批准状态。 -
comment_agent
:评论作者的用户代理。 -
comment_type
:评论的类型,如果是pingback
或trackback
。 -
comment_parent
:对于嵌套注释,这是父注释的ID。 如果是顶级注释,则为0
。 -
user_id
:如果注释作者未在网站上注册,则为0
,否则为用户ID。
现在让我们看一下WP_Comment_Query
类的参数。
WP_Comment_Query类的参数
我们可以在WP_Comment_Query
使用34个参数,但不要让它们吓到您:您已经可以从它们的名称中识别出它们,其他参数同样易于解释和使用。
-
author_email
(字符串):评论作者的电子邮件地址。 -
author__in
(数组):要包含在查询中的作者ID。 -
author__not_in
(数组):要从查询中排除的作者ID。 -
post_author__in
(数组):与author__in
相同。 -
post_author__not_in
(数组):与author__not_in
相同。 -
include_unapproved
(数组):一组用户ID或电子邮件地址,无论其批准状态如何,都应返回其注释。 -
fields
(字符串):要返回的注释字段。 仅接受'ids'
仅用于返回评论ID。 -
comment__in
(数组):要包含在查询中的注释ID。 -
comment__not_in
(数组):要从查询中排除的注释ID。 -
karma
(整数):要返回匹配注释的“业力”分数。 (还记得上一节中的comment_karma
吗?) -
number
(整数):要返回的最大评论数。 -
offset
(整数):要在查询中传递的注释数。 -
orderby
(字符串或数组):注释状态或一组状态,用于对查询结果进行排序。 接受从query()
方法返回的所有键,以及'meta_value'
,'meta_value_num'
,$meta_key
值,FALSE
,空数组或'none'
。 (最后三个禁用查询中的ORDER BY
子句。) -
order
(字符串):如何对检索到的注释进行排序-'ASC'
代表升序,'DESC'
代表降序。 (默认:'DESC'
) -
parent
(整数):用于获取子级的父级注释的ID。 -
post_id
(整数):发布ID以检索评论。 (默认:0
) -
post__in
(数组):要包含在结果中的发布ID。 -
post__not_in
(数组):要从结果中排除的ID。 -
post_author
(整数):发表作者的ID,以限制结果。 -
post_name
(字符串):post_name
以获取评论。 -
post_parent
(整数):用于获取评论的父帖子ID。 -
post_type
(字符串):要发表评论的帖子类型。 -
post_status
(字符串):发布状态以获取评论。 -
status
(字符串):注释状态以限制结果。 接受'hold'
,'approve'
,'all'
或自定义评论状态。 (默认:'all'
) -
type
(字符串或数组):用于过滤查询的注释类型或注释类型数组。 接受'comment'
,'pings'
(意味着pingback和trackback结合在一起)或自定义评论类型。 -
type__in
(数组):要包含在查询中的注释类型。 -
type__not_in
(数组):要从查询中排除的注释类型。 -
user_id
(整数):包含特定用户评论的用户ID。 -
search
(字符串):搜索字词以获取匹配的注释。 -
count
(布尔值):返回评论计数(TRUE
)或评论数组(FALSE
)。 (默认:FALSE
) -
meta_key
(字符串):一个自定义元密钥,仅包含匹配的注释。 -
meta_value
(字符串):一个自定义元值,仅包含匹配的注释。 -
meta_query
(数组):WP_Meta_Query
子句的数组(我们将在本系列的下一部分中看到)。 -
date_query
(数组):WP_Date_Query
子句的数组(我们将在本系列的下一部分中看到)。 (默认值:NULL
)
注意:除非上面另有说明,否则所有参数的默认值为空。
了解WP_Comment_Query如何工作的快速示例
如果我们不了解它的工作原理,那将不会像是完整的教程,是吗? 让我们考虑一个简单的场景,然后做一个简单的例子。
假设您要列出帖子作者的评论,并按评论ID(而不是评论日期)对列表进行排序。 这是您的工作:
<?php
// Get the global `$wp_query` object...
global $wp_query;
// ...and use it to get post author's id.
$post_author_id = $wp_query->post->post_author;
// Setup arguments.
$args = array (
'user_id' => $post_author_id,
'orderby' => 'comment_ID'
);
// Custom comment query.
$my_comment_query = new WP_Comment_Query;
$comments = $my_comment_query->query( $args );
// Check for comments.
if ( $comments ) {
// Start listing comments.
echo '<ul class="author-comments">';
// Loop over comments.
foreach( $comments as $comment ) {
echo '<li>' . $comment->comment_content . '</li>';
}
// Stop listing comments.
echo '</ul>';
} else {
// Display message if no comments are found.
echo '<p class="no-author-comments">' . __( 'The post author didn\'t post any comments.', 'tutsplus' ) . '</p>';
}
?>
快速提示:如果要构建注释查询,但要使用GUI而不是键入代码,则可以使用GenerateWP的WP_Comment_Query
Generator 。
包装一切
就像我说的,我们即将结束本系列。 在下一部分中,我们将一起学习WP_Meta_Query
和WP_Date_Query
类。
您对本文有什么要补充的吗? 在下面的评论部分与我们分享您的想法。 而且,如果您喜欢这篇文章,请不要忘记与您的朋友分享。
如果您对一些脚本和插件感兴趣,这些脚本和插件可以为您的注释系统提供更高级的功能,那么Envato Market上有很多有用的项目 。
翻译自: https://code.tutsplus.com/tutorials/mastering-wp_comment_query--cms-23238