Как отобразить количество просмотров записи

14 мая 2014 г., 07:39:16
Просмотры: 30.7K
Голосов: 2

Я пытаюсь отобразить количество просмотров записей.

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

Функция:

       <?php
          // функция для отображения количества просмотров
           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);
               }
             }


          // Добавляем столбец в админ-панель WordPress
     add_filter('manage_posts_columns', 'posts_column_views');
       add_action('manage_posts_custom_column', 'posts_custom_column_views',5,2);
     function posts_column_views($defaults){
      $defaults['post_views'] = __('Просмотры');
     return $defaults; 
        }
       function posts_custom_column_views($column_name, $id){
if($column_name === 'post_views'){
    echo getPostViews(get_the_ID());
      }
       }
     ?>

Код цикла:

   <ul>
      <?php $the_query = new WP_Query( 'showposts=5' ); ?>

        <?php while ($the_query -> have_posts()) : $the_query -> the_post(); ?>
      <li><a href="<?php the_permalink() ?>"><?php the_title(); ?></a>

       <?php echo getPostViews(get_the_ID()); ?>  //код отображения просмотров

  <?php echo substr(strip_tags($post->post_content), 0, 250);?></li>

      <?php endwhile;?>
  </ul>

Нужны предложения по отображению корректного количества просмотров записей в цикле while

2
Комментарии

Откуда взят этот код?

Brad Dalton Brad Dalton
14 мая 2014 г. 07:44:49

Можете объяснить, зачем вы сначала удаляете, а потом добавляете счетчик просмотров в функции getPostViews?

Chittaranjan Chittaranjan
14 мая 2014 г. 10:12:50
Все ответы на вопрос 3
1

Добавьте это в single.php, убедившись, что вставляете код внутри цикла.

<?php setPostViews(get_the_ID()); ?>

Наконец, чтобы отобразить количество просмотров записи, добавьте следующий код в нужное место:

<?php echo getPostViews(get_the_ID()); ?>

.

<?php

// функция для отображения количества просмотров записи.

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);
    }
}

?>
10 апр. 2017 г. 12:06:41
Комментарии

Я использовал ваш код, и он работает нормально, но я не понимаю, почему у нас 2 запроса? https://uupload.ir/files/bt01_screen_shot_2020-12-01_at_4.57.55_am.png

D.JCode D.JCode
1 дек. 2020 г. 03:30:16
0

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

echo (int) get_post_meta(get_the_ID(), 'post_views_count', true) . ' просмотр(ов)';
14 мая 2014 г. 10:11:00
0
-1

Для значения 0 в add_post_meta счетчик просмотров не обновляется. Попробуйте использовать строку add_post_meta($postID, $count_key, '1'); вместо строки add_post_meta($postID, $count_key, '0');.

29 мая 2019 г. 10:39:52