掌握WP_Comment_Query

我们即将结束本系列的“精通WP_Query ”,现在该介绍WP_Query类的兄弟姐妹了。 在上一部分中,我们介绍了WP_User_Query ,在本文中,我们将学习WP_Comment_Query类。

让我们开始!

什么是WP_Comment_Query?

在WordPress 3.1版中引入的WP_Comment_Query类几乎完成了所有关于WordPress查询注释的繁重工作。 本质上,它允许查询两个数据库表wp_commentswp_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 :评论的类型,如果是pingbacktrackback
  • 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_QueryWP_Date_Query类。

您对本文有什么要补充的吗? 在下面的评论部分与我们分享您的想法。 而且,如果您喜欢这篇文章,请不要忘记与您的朋友分享。

如果您对一些脚本和插件感兴趣,这些脚本和插件可以为您的注释系统提供更高级的功能,那么Envato Market上有很多有用的项目

翻译自: https://code.tutsplus.com/tutorials/mastering-wp_comment_query--cms-23238

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值