Включить детей в WP_Query - PullRequest
2 голосов
/ 06 мая 2019

Мне нужно включить дочерние комментарии (ответы) в комментарии, которые я фильтрую мета-запросом.

Если я фильтрую комментарии с рейтингом 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 Ответ

2 голосов
/ 07 мая 2019

Проблема в том, что вы получаете единственный комментарий с определенной мета, но дочерние комментарии явно не наследуют эту мету.Так что вам нужно сделать это в два этапа: 1) получить комментарии с мета.2) получить комментарии детей к родителю, с которым есть мета.

// 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);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...