Как посчитать, сколько сообщений прокомментировал пользователь? - PullRequest
0 голосов
/ 28 мая 2020

Я знаю, как получить количество всех комментариев, написанных конкретным c пользователем, но как подсчитать, сколько сообщений этот пользователь прокомментировал (в WordPress).

1 Ответ

1 голос
/ 28 мая 2020

Если вы хотите подсчитать количество комментариев, оставленных пользователем к сообщениям:

Вы можете использовать функцию get_comments()

https://developer.wordpress.org/reference/functions/get_comments/

который принимает массив аргументов

https://developer.wordpress.org/reference/classes/wp_comment_query/__construct/

В вашем массиве аргументов вы используете user_id только для получения комментариев этого пользователя. Вы также используете count для возврата количества комментариев.

Код выглядит следующим образом:

<?php
    $comments_args = array(
        'user_id' => 12,   // Your user ID, for example user with id 12
        'count'   => true // Return count
    );
    $comments_count = get_comments( $comments_args );

    echo $comments_count;
?>

Теперь у вас есть количество комментариев, написанных пользователем с идентификатором 12.


Если вы хотите подсчитать сообщения, в которые пользователь добавил один или несколько комментариев:

Вы можете использовать WP_Query, просмотреть свои сообщения и использовать wp_list_pluck(), чтобы вырвать поле каждого объекта.

$args = array(
    'post_type'      => 'post',
    'posts_per_page' =>-1,
    'post__in' => array_unique( 
         wp_list_pluck( 
            get_comments( array(
                'user_id' => get_current_user_id() 
                )
            ),       
            'comment_post_ID' 
         )
    ),
);
$comment_query = new WP_Query( $args );

// The Loop
$counter = 0;
if ( $comment_query ->have_posts() ) {
    while ( $comment_query ->have_posts() ) {
        $comment_query ->the_post();
            $counter++;
            // or display title or something
    }
    /* Restore original Post Data */
    wp_reset_postdata();
} else {
    // no posts found
}

Теперь вы можете отобразить номер, используя echo $counter;.

...