在WP_Query中包括子项

时间:2019-05-06 14:11:41

标签: wordpress woocommerce comments

我需要在要通过元查询过滤的评论中包含子评论(回复)。

如果我要过滤等级为3/5的评论,则需要在查询中包括其子级(即使子级与元查询不匹配)。

$comments = get_comments( array (
    //'meta_key' => 'rating',
    'order' => 'ASC',
    'orderby' => 'date',
    'post_id' => $_POST['post_id'],
    'status' => 'approve',
    'meta_query' => array(
        array(
            'key' => 'rating',
            'value' => $_POST['rating']
        )
    )
) );

是否有一种方法可以“强制包含”与初始查询不匹配的子级?

(要实时查看该问题,请尝试在此页面上按3星过滤评论,并注意过滤器中是否包含 评论回复:https://herbalnitro.com/product/extreme-energy/

1 个答案:

答案 0 :(得分:2)

您只能获得带有特定元数据的唯一注释,但子注释显然不会继承此元数据的问题。因此,您需要分两个步骤进行操作:1)获取带有meta的评论。 2)取得与meta在一起的父母的孩子评论。

// get comments with meta
$comments = get_comments( array (
    'order' => 'ASC',
    'orderby' => 'date',
    'post_id' => $_POST['post_id'],
    'status' => 'approve',
    'meta_query' => array(
        array(
            'key' => 'rating',
            'value' => $_POST['rating']
        )
    )
) );


// find children comments
$comments_children = array();
foreach ( $comments as $comment ) {
    $comments_children += get_comments(array('parent' => $comment->comment_ID, 'status' => 'approve', 'hierarchical' => true));
}

// combine all comments
$comments = array_merge($comments, $comments_children);

// print comments template if needed
wp_list_comments(array(), $comments);