Вывод количества просмотров записей WordPress без плагина

    4 комментария 5343

views-post-wordpress

Привет, друзья. Вы наверняка видели на некоторых WordPress сайтах показывается количество просмотров статей и таким образом можно понять на сколько та или иная статья популярна. И однажды я показывал как сделать счетчик просмотров страниц на PHP, но там мы хранили просмотры в текстовом файле. Сейчас же мы будем подсчитывать количество просмотров записей и хранить их в базе данных и сделаем это без каких-либо плагинов. Так же выведем просмотры статей в админке. И для начала открываем в редакторе на редактирование файл темы — functions.php и вставляем в него этот кусок кода:

Телеграм-канал serblog.ru

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
add_filter("wp_head", "wpds_increament_post_view");
function get_post_views($post_id=NULL){
    global $post;
    if($post_id==NULL)
        $post_id = $post->ID;
    if(!empty($post_id)){
        $views_key = 'wpds_post_views';
        $views = get_post_meta($post_id, $views_key, true);
        if(empty($views) || !is_numeric($views)){
            delete_post_meta($post_id, $views_key);
            add_post_meta($post_id, $views_key, '0');
            return "<img src='". get_template_directory_uri()."/images/eye.svg' width='15'/> 0";
        }
        else if($views == 1)
            return "<img src='". get_template_directory_uri()."/images/eye.svg' width='15'/> 1";
        return "<img src='". get_template_directory_uri()."/images/eye.svg' width='15'/> ".$views;
    }
}
function wpds_increament_post_view() {
    global $post;
 
    if(is_singular()){
        $views_key = 'wpds_post_views';
        $views = get_post_meta($post->ID, $views_key, true);
        if(empty($views) || !is_numeric($views)){
            delete_post_meta($post->ID, $views_key);
            add_post_meta($post->ID, $views_key, '1');
        }else
            update_post_meta($post->ID, $views_key, ++$views);
    }
}

На 12, 15 и 16 строках необходимо указать ссылку на картинку в виде глаза. И в месте, где мы хотим вывести количество просмотров статей, как правило в самом верху между заголовком и тело статьи, вставляем функцию вывода:

<span class="meta_views">< ?php echo get_post_views(get_the_ID()); ?></span>

Класс meta_views ужен для того, чтобы была возможность выровнять изображение, которое может позиционироваться неправильно. Вот примерные стили для нормального отображения, которые использовал я:

1
2
3
4
span.meta_views img {
    position: relative;
    top: 3px;
}

В итоге должно получиться следующее:

views-wordpress

Само собой у всех ваших записей, если они существуют уже давно, счетчик просмотров будет 0. Но вы можете самым популярным записям самостоятельно указать необходимое количество, взяв данные из аналитики. Количество просмотров хранится в базе данных WordPress в таблице wp_postmeta в колонке meta_value.

table_mysql

Но это занятие может утомить, если записей слишком много, поэтому могу предложить вариант автоматизации. Заключается он в том, что мы можем установить всем старым статьям определенное значение, например 500 просмотров для каждой. Но целесообразней будет заполнить ячейку таблицы разными значениями и мы тоже может это сделать выполнив такой запрос в mySQL:

Рандомно разные значения

UPDATE wp_postmeta SET meta_value= FLOOR(500 + (RAND() * 1000));

Одинаковые значения

UPDATE wp_postmeta SET meta_value= 500;

И теперь давайте отобразим это в админке.

1
2
3
4
5
6
7
8
9
10
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 get_post_views(get_the_ID());
}

И получаем:
views-wp

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

Любая сумма на развитие сайта

4 комментария
  1. Где нужно написать UPDATE wp_postmeta SET meta_value= FLOOR(500 + (RAND() * 1000));

  2. Спасибо. Вот ваш метод у меня работает на блоге.

  3. Хочу попробовать сделать счетчик без плагинов.

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

Ваш e-mail не будет опубликован. Обязательные поля помечены *