Вопрос или проблема
Есть ли способ отобразить общее количество просмотров всех постов одной категории? Как показать это число на странице архива? Я использовал этот код для подсчета просмотров каждого поста:
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 и семантику.
- Обработка ошибок: Вам может пригодиться обработка случаев, когда в категории нет постов. В этом случае, вы можете выводить сообщение, например, "В данной категории нет постов."
Заключение
Таким образом, с помощью предложенной функции и кода, вы сможете легко отображать общее количество просмотров всех постов одной категории на архивной странице вашего сайта. Это добавит дополнительную ценность для пользователей, позволяя им видеть популярность содержимого конкретной категории.
Если у вас возникнут вопросы или потребуется дополнительная помощь, не стесняйтесь обращаться!