WordPress. Количество просмотров записи

29.05.2019

Теги: CMSWeb-разработкаWordPressБазаДанныхПлагинУдалить

Давайте создадим плагин, который будет показывать на странице записи блога количество просмотров этой записи. Для этого добавим в таблицу базы данных wp_posts дополнительное поле view_count, которое будет хранить количество просмотров записи. При каждом просмотре записи, будем увеличивать наш счетчик.

Итак, создаем директорию tokmakov-view-count, а внутри нее — файл tokmakov-view-count.php:

<?php
/*
Plugin Name: Количество просмотров
Plugin URI: https://tokmakov.msk.ru
Description: Выводит количество просмотров записей блога
Version: 1.0
Author: Евгений Токмаков
Author URI: https://tokmakov.msk.ru
*/

При активации плагина добавляем в таблицу БД wp_posts поле, которое будет хранить кол-во просмотров записи:

<?php
/*
Plugin Name: Количество просмотров
Plugin URI: https://tokmakov.msk.ru
Description: Выводит количество просмотров записей блога
Version: 1.0
Author: Евгений Токмаков
Author URI: https://tokmakov.msk.ru
*/

/*
 * При активации плагина добавляем в таблицу БД wp_posts
 * поле, которое будет хранить кол-во просмотров записи
 */
register_activation_hook(__FILE__, function() {
    global $wpdb;
    // проверяем, что колонка не существует
    $query = "SELECT
                  1
              FROM
                  `information_schema`.`columns`
              WHERE
                  `column_name`='view_count'
                  AND
                  `table_name`='".$wpdb->posts."'";
    $result = $wpdb->get_row($query);
    if (!is_null($result)) {
        return;
    }
    // добавляем новую колонку
    $query = "ALTER TABLE
                  ".$wpdb->posts."
              ADD
                  `view_count` BIGINT UNSIGNED NOT NULL DEFAULT 0
              AFTER
                  `comment_count`";
    $wpdb->query($query);
});

При просмотре записи блога показываем кол-во просмотров:

<?php
/*
Plugin Name: Количество просмотров
Plugin URI: https://tokmakov.msk.ru
Description: Выводит количество просмотров записей блога
Version: 1.0
Author: Евгений Токмаков
Author URI: https://tokmakov.msk.ru
*/

/*
 * При активации плагина добавляем в таблицу БД wp_posts
 * поле, которое будет хранить кол-во просмотров записи
 */
register_activation_hook(__FILE__, function() {
    /*...*/
});

/*
 * При просмотре записи блога показываем кол-во просмотров
 */
add_filter('the_content', function($content) {

    // показываем только на странице поста
    if (!is_single()) {
        return $content;
    }

    global $post;
    $views = $post->view_count;
    $text = '<p>Кол-во просмотров: ' . $views . '</p>';
    return $content . $text;
});

При каждом просмотре записи блога обновляем счетчик:

<?php
/*
Plugin Name: Количество просмотров
Plugin URI: https://tokmakov.msk.ru
Description: Выводит количество просмотров записей блога
Version: 1.0
Author: Евгений Токмаков
Author URI: https://tokmakov.msk.ru
*/

/*
 * При активации плагина добавляем в таблицу БД wp_posts
 * поле, которое будет хранить кол-во просмотров записи
 */
register_activation_hook(__FILE__, function() {
    /*...*/
});

/*
 * При просмотре записи блога показываем кол-во просмотров
 */
add_filter('the_content', function($content) {
    /*...*/
});

/*
 * При каждом просмотре записи блога обновляем счетчик
 */
add_action('wp_head', function() {

    if (!is_single()) {
        return;
    }

    global $post, $wpdb;
    $views = $post->view_count + 1;
    // выполяем UPDATE-запрос к базе данных
    $wpdb->update(
        $wpdb->posts, // имя таблицы базы данных
        ['view_count' => $views], // какое поле таблицы обновляем
        ['ID' => $post->ID] // условие where для запроса
    );
});

Файл uninstall.php, который будет выполнен при удалении плагина:

<?php
if (!defined('WP_UNINSTALL_PLUGIN')) {
    exit;
}

global $wpdb;
// перед удалением проверяем, что колонка существует
$query = "SELECT
              1
          FROM
              `information_schema`.`columns`
          WHERE
              `column_name`='view_count'
              AND
              `table_name`='".$wpdb->posts."'";
$result = $wpdb->get_row($query);
if (is_null($result)) {
    return;
}
// удаляем колонку для хранения количества просмотров
$query = "ALTER TABLE
              ".$wpdb->posts."
          DROP
              `view_count`";
$wpdb->query($query);

Поиск: CMS • Web-разработка • WordPress • База данных • Плагин • Удалить • Количество просмотров

Каталог оборудования
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
Производители
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
Функциональные группы
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.