WordPress 自定义的评论查询类 WP_Comment_Query 参考文档和使用实例
WordPress 获取评论所有主题都是使用wp_list_comments()
函数,获取每篇文章的评论是相当的方便实用,唯一的不足是不能通过自定义值来获取评论,不过我们可以通过评论查询类WP_Comment_Query()
来单独获取有自定义值的评论。
WP_Comment_Query()的用法:
wp_list_comments( array( 'callback' => 'salong_comment','type'=>'comment' ) );
其中salong_comment
为评论的模版函数,自己可以写个。
本文最重要的还是介绍wp_list_comments()
函数的使用与实例。
一、描述
WP_Comment_Query是一个类,定义在 wp-includes/class-wp-comment-query.php 文件中,允许查询WordPress数据库表“wp_comments”和“wp_commentmeta”,这个类是在WordPress3.1版本中引入的。
二、使用
$args = array( // args here ); // The Query $comments_query = new WP_Comment_Query; $comments = $comments_query->query( $args ); // Comment Loop if ( $comments ) { foreach ( $comments as $comment ) { echo $comment->comment_content; } } else { echo 'No comments found.'; }
三、默认参数
$args = array( 'author_email' => '', 'author_url' => '', 'author__in' => '', 'author__not_in' => '', 'include_unapproved' => '', 'fields' => '', 'ID' => '', 'comment__in' => '', 'comment__not_in' => '', 'karma' => '', 'number' => '', 'offset' => '', 'no_found_rows' => true, 'orderby' => '', 'order' => 'DESC', 'parent' => '', 'parent__in' => '', 'parent__not_in' => '', 'post_author__in' => '', 'post_author__not_in' => '', 'post_id' => 0, 'post__in' => '', 'post__not_in' => '', 'post_author' => '', 'post_name' => '', 'post_parent' => '', 'post_status' => '', 'post_type' => '', 'status' => 'all', 'type' => '', 'type__in' => '', 'type__not_in' => '', 'user_id' => '', 'search' => '', 'hierarchical' => false, 'count' => false, 'cache_domain' => 'core', 'meta_key' => '', 'meta_value' => '', 'meta_query' => '', 'date_query' => null, // See WP_Date_Query 'update_comment_meta_cache' => true, 'update_comment_post_cache' => false, );
四、参数说明
1、属性
$status
(字符串) (可选) 值返回指定状态的评论
'hold' – 未通过审核的评论
'approve' – 已审核的评论
'spam' – 被标记未垃圾的评论
'trash' – 回收站中的评论
默认: None
$orderby
(字符串) (可选) 设置排列评论数据使用的字段
默认: comment_date_gmt
$order
(字符串) (可选) 排列 $orderby 的方法,可用值:
'ASC' – 升序 (从低到高)
'DESC' – 降序 (从高到低)
默认: DESC
$number
(整数) (可选) 返回的评论数量,留空返回所有评论。
默认: unlimited
$offset
(整数) (可选) 偏移的评论数量,必须和 $number 参数一起使用
默认: 0
$post_id
(整数) (可选) 只返回指定 ID 文章的评论。
默认: None
$user_id
(整数) (可选) 只返回指定 ID 用户的评论。
默认: None
$count
(整数) (可选) 只返回评论的总数量。
默认: None
$type__in
(数组) (可选) 允许指定评论类型
默认: None
$type__not_in
(数组) (可选) 允许指定排除的评论类型
默认: None
$meta_key
(字符串) (可选) 自定义评论元数据 key。
默认: None
$meta_value
(字符串) (可选) 自定义评论元数据值。
默认: None
$meta_query
(数组) (可选) 高级元数据查询参数 (从 3.5 版开始可用)。
默认: None
$fields
(字符串) (可选) 指定返回的字段 ( 从4.0版本开始可用 )。
'ids' – 评论 ID
'*' – 所有评论字段
默认: *
2、自定义字段参数
显示包含某个自定义字段的评论
meta_key (字符串) – 自定义字段key
meta_value ( 字符串) – 自定义字段值
meta_query (数组) – 自定义字段参数 (从 3.5 版开始可用)
key (字符串) -自定义字段key
value (字符|数组) – 自定义字段值 (注意: 数组支持只限在以下对比方法中使用: 'IN', 'NOT IN', 'BETWEEN', 'NOT BETWEEN', 'EXISTS' 或 'NOT EXISTS')
compare (字符) – 数据对比方法 '=', '!=', '>', '>=', '<', '<=', 'LIKE', 'NOT LIKE', 'IN', 'NOT IN', 'BETWEEN', 'NOT BETWEEN', 'EXISTS', 和 'NOT EXISTS'。 默认为 '='。
type (字符) – 自定义字段类型,可用的值有 'NUMERIC', 'BINARY', 'CHAR', 'DATE', 'DATETIME', 'DECIMAL', 'SIGNED', 'TIME', 'UNSIGNED'。 默认值为 'CHAR'。
3、获取特色评论
$comment_query = new WP_Comment_Query( array( 'meta_key' => 'featured', 'meta_value' => '1' ) );
4、多个元数据查询处理方法
$args = array( 'meta_query' => array( 'relation' => 'AND', array( 'key' => 'featured', 'value' => '1' ), array( 'key' => 'buried', 'value' => '1', 'type' => 'numeric', 'compare' => '!=' ) ) ); $comment_query = new WP_Comment_Query( $args );
五、返回值
(数组)
包含以下索引键的评论字段(如果没有评论,返回空数组):
comment_ID
(整数) 评论 ID
comment_post_ID
(整数) 评论所在的文章/页面
comment_author
(字符串) 评论者的名称
comment_author_email
(字符串) 评论者的电子邮件
comment_author_url
(字符串) 评论者的链接
comment_author_IP
(字符串) 评论者的 IP
comment_date
(字符串) 评论日期时间 (YYYY-MM-DD HH:MM:SS)
comment_date_gmt
(字符串) 评论的 GMT 日期时间 (YYYY-MM-DD HH:MM:SS)
comment_content
(字符串) 评论内容
comment_karma
(整数) 评论来源
comment_approved
(字符串) 评论审核状态 (0, 1 或 “spam”)
comment_agent
(字符串) 评论者的客户端信息 (浏览器, 操作系统,等)
comment_type
(字符串) 评论类型 (pingback|trackback), 普通评论为空
comment_parent
(字符串) 评论的父级评论 ID,顶级评论为 0
user_id
(整数) 如果评论者已注册,返回评论者的 用户ID
六、实例
获取当前文章下被点赞的评论,并按点赞数量反向排序
$args = array( 'post_id' => $post->ID, 'meta_query' => array( array( //获取有 like 自定义值的且值不为0的评论 'key' => 'like', 'value' => '0', 'compare' => '!=' ) ), // 按钮自定义值排序 'orderby' => 'meta_value_num', ); $comments_query = new WP_Comment_Query; $popularcomments = $comments_query->query( $args ); foreach ( $popularcomments as $comment ) { echo $comment->comment_content; }