Как подсчитать количество посещений записи или страницы WordPress - WAVIFUN.RU

Как подсчитать количество посещений записи или страницы WordPress

Очень часто для организации небольшой статистики посещения той или иной страницы или записи (поста) мы пытаемся найти хороший и бесплатный плагин на WordPress, который помог бы нам в этом. Зачастую встречаются плагины, которые либо работают как-то криво, либо они платные и т.д.  В этой статье мы не будем рассматривать никаких плагинов, не будем их создавать, а рассмотрим расширение функционала нашего сайта, который помог нам в этом.

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

Открываем файл function.php и в самом низу файла пишем функцию:

function checkViewsTableAndCreate($table_name) {
 // объявляем переменную $wpdb для подключения к базе данных
 global $wpdb;
 
 // создаём имя таблицы, с префиксом БД и из переданного параметра функции
 $table = $wpdb->get_blog_prefix() . $table_name;

 // Делаем тестовый запрос к таблицы
 // для того, чтобы проверить существует ли она
 $test = $wpdb->get_row("SELECT id FROM $table");

 // если переменная $test пустая, то создаём таблицу
 if(empty($test)) {
  // подключаем файл upgrade.php
  require_once ABSPATH . 'wp-admin/includes/upgrade.php';

  // устанавливаем кодировку
  $charset_collate = "DEFAULT CHARACTER SET {$wpdb->charset} COLLATE {$wpdb->collate}";

  // создаём запрос на создание таблицы
  $sql = "CREATE TABLE {$table} (
   id int NOT NULL auto_increment,
   post_id int(11) NOT NULL,
   views int(11) NOT NULL,
   PRIMARY KEY (id)
  )
  {$charset_collate};

  // выполняем запрос
  dbDelta($sql);
 } 
} 
// Далее вызовем функцию
// posts_pages_views - название таблицы, которую будем создавать 
checkViewsTableAndCreate('posts_pages_views');

Далее необходимо создать функцию, которая выполняла бы следующие действия:

    1. 1. Получение количества просмотров из таблицы posts_pages_views по определённой статье
    1. 2. Выполняла бы проверку на предмет наличия каких-либо просмотров по определённой статье
    1. 3. В случае, если просмотров по статье нет, то создавала бы запись с количеством просмотров равный одному
    1. 4. В случае, если просмотры по статье уже есть, то прибавляла бы один просмотр к уже имеющемуся

В саму функцию мы будем передавать два параметра: идентификатор поста и название таблицы

function countViews($postId, $table) {
    global $wpdb;
    // Делаем запрос в нашу таблицу
    $get_views = $wpdb->get_row("SELECT views FROM $wpdb->get_blog_prefix() . $table WHERE post_id = '$postId'", ARRAY_A);
    // Проверяем, если $get_views имеет пустое значение
    if(empty($get_views)) {
       // выполняем запрос на добавление в таблицу первого просмотра
       $wpdb->insert($wpdb->get_blog_prefix() . $table, array('post_id' => $postId, 'views' => 1));
    } else {
        // иначе плюсуем один просмотр к уже имеющемуся значению
        $views = $get_views['views'] + 1;
        // обновляем данные в таблице
        $wpdb->update($wpdb->get_blog_prefix() . $table, array('views' => $views), array('post_id' => $postId));
    }
}

Вызвать эту функцию необходимо на странице single.php — этот файл по умолчанию отвечает за вывод полного текста статьи. Если у вас за вывод полного текста статьи отвечает другой файл, то эту функцию необходимо вызвать в нём.

Как подсчитать количество посещений записи или страницы WordPress

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

function showViews($postId, $table) {
    global $wpdb;
    // делаем запрос на получение общего количества просмотров поста
    $get_views = $wpdb->get_row("SELECT views FROM $wpdb->get_blog_prefix() . $table WHERE post_id = '$postId'", ARRAY_A);
    // если переменная $get_views не пустая
    if(!empty($get_views)) {
        // выведем полученное значение
        return $get_views['views'];
    } else {
        // иначе выведем 0
        return 0;
    }
}

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


Как подсчитать количество посещений записи или страницы WordPress

В результате видим следующее

Как подсчитать количество посещений записи или страницы WordPress

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

0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.

0 Комментарий
Межтекстовые Отзывы
Посмотреть все комментарии