Как подсчитать количество посещений записи или страницы 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. Получение количества просмотров из таблицы posts_pages_views по определённой статье
-
- 2. Выполняла бы проверку на предмет наличия каких-либо просмотров по определённой статье
-
- 3. В случае, если просмотров по статье нет, то создавала бы запись с количеством просмотров равный одному
-
- 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 — этот файл по умолчанию отвечает за вывод полного текста статьи. Если у вас за вывод полного текста статьи отвечает другой файл, то эту функцию необходимо вызвать в нём.
Далее в файле 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. По такой же аналогии мы можем с вами сделать подсчёт лайков или дизлайков по каждой статье. Но для этого мы уже напишем с Вами плагин, которой будет использовать технологию AJAX. Если вам интересно, пишите в комментариях.