Как отобразить общее количество просмотров всех постов одной категории?

Вопрос или проблема

Есть ли способ отобразить общее количество просмотров всех постов одной категории? Как показать это число на странице архива? Я использовал этот код для подсчета просмотров каждого поста:

function getPostViews($postID){
    $count_key ='post_views_count';
    $count = get_post_meta($postID, $count_key,true);
    if($count=='' || $count < 0){
        delete_post_meta($postID, $count_key);
        add_post_meta($postID, $count_key,'0');
        return"0 Просмотров";
    }
    return $count.' Просмотров';}function setPostViews($postID){
    $count_key ='post_views_count';
    $count = get_post_meta($postID, $count_key,true);
    if($count=='' || $count < 0){
        $count =0;
        delete_post_meta($postID, $count_key);
        add_post_meta($postID, $count_key,'0');
    }else{
        $count = $count + 1;
        update_post_meta($postID, $count_key, $count);
    }
  }

Но как подсчитать общее количество просмотров для одной категории и отобразить его? Пожалуйста, помогите мне!

<?php
    $QUERY = new Wp_query(array( 
        'post_type' => 'post_type_here',
        'category_name' => 'category_name_here',
        // вы можете использовать id категории ...
    ));
    $counter = 0;
    while( $QUERY->have_posts() ) : $QUERY->the_post();
        $views = absint( getPostViews( $post->ID ) );
        $counter += $views;
    endwhile; wp_reset_postdata();
    echo $counter;

?>

getPostViews() и setPostViews :

function getPostViews( $postID ){

    $count_key = 'post_views_count';
    $count = get_post_meta($postID, $count_key, true);
    if($count==''){
        delete_post_meta($postID, $count_key);
        add_post_meta($postID, $count_key, '0');
        return "0";
    }
    return $count;
}


function setPostViews( $postID ) {

    $count_key = 'post_views_count';
    $count = get_post_meta($postID, $count_key, true);
    if($count==''){
        $count = 0;
        delete_post_meta($postID, $count_key);
        add_post_meta($postID, $count_key, '0');
    }else{
        $count++;
        update_post_meta($postID, $count_key, $count);
    }

}

.

Ответ или решение

Чтобы отобразить общее количество просмотров всех постов определенной категории на архивной странице, вам нужно немного изменить уже имеющийся код. В данной инструкции пошагово рассмотрим, как это реализовать.

Шаг 1: Определение функции для получения общего количества просмотров

Создадим новую функцию, которая будет суммировать просмотры всех постов в конкретной категории. В этом случае мы используем вашу функцию getPostViews и дополнительно обрабатываем запрос к базе данных.

function getTotalViewsByCategory($category_slug) {
    $args = array(
        'post_type' => 'post', // Замените 'post' на ваш тип поста, если необходимо
        'category_name' => $category_slug,
        'posts_per_page' => -1 // Получение всех постов в категории
    );

    $query = new WP_Query($args);
    $total_views = 0;

    // Цикл по всем постам в категории
    while ($query->have_posts()) {
        $query->the_post();
        $views = absint(getPostViews(get_the_ID())); // Получение количества просмотров текущего поста
        $total_views += $views; // Суммирование
    }

    wp_reset_postdata(); // Сброс данных запроса
    return $total_views; // Возвращаем общее количество просмотров
}

Шаг 2: Вывод общего количества просмотров на архивной странице

Теперь, когда мы имеем функцию для получения общего количества просмотров, вы можете вызвать эту функцию в нужном месте на вашей архивной странице.

<?php
// Например, для категории 'news'
$category_slug = 'news'; // Замените на нужное название категории
$total_views = getTotalViewsByCategory($category_slug);
echo 'Общее количество просмотров всех постов в категории "' . esc_html($category_slug) . '": ' . $total_views . ' просмотров.';
?>

Шаг 3: Оптимизация и настройки

  • Кэширование: Если ваша категория имеет много постов, вы можете подумать о кэшировании результата, чтобы улучшить производительность.
  • SEO: Убедитесь, что выводимые данные о просмотрах имеют понятное и полезное содержание для пользователей и поисковых систем. Используйте правильные теги HTML и семантику.
  • Обработка ошибок: Вам может пригодиться обработка случаев, когда в категории нет постов. В этом случае, вы можете выводить сообщение, например, "В данной категории нет постов."

Заключение

Таким образом, с помощью предложенной функции и кода, вы сможете легко отображать общее количество просмотров всех постов одной категории на архивной странице вашего сайта. Это добавит дополнительную ценность для пользователей, позволяя им видеть популярность содержимого конкретной категории.

Если у вас возникнут вопросы или потребуется дополнительная помощь, не стесняйтесь обращаться!

Оцените материал
Добавить комментарий

Капча загружается...