Commit 2dbbcf7a authored by Vadim's avatar Vadim

Version 2.0.1

Readme и забытый шорт-код [bg_counter_post_rating]
parent 4000262c
Плагин **Bg Az-Counter** обеспечивает работу клиентской части системы подсчета количества посещений страниц на базе Redis-based сервера `https://stat.azbyka.ru`.
Код и описание работы сервера [см. здесь](https://gitlab.eterfund.ru/azbyka/stats-server).
## Плагин выполняет следующие функции:
### Передает на сервер информацию об открытии страницы пользователем
### Запрашивает сервер и отображает на странице количество пользователей, просматривающих в данный момент страницу и общее количество просмотров страницы.
Для этого на странице должны быть размещена следующая HTML-разметка:
```html
<span class="bg-az-counter" data-type="post" data-ID="1234">
<span class="bg-az-counter-now"></span>
<span class="bg-az-counter-views"></span>
</span>
```
где
* ***data-type*** - тип записи (пока поддерживается только *post*, но при желании можно сделать *category*, *mark* и что-нибудь еще),
* ***data-ID*** - ID записи (объекта).
Для вставки HTML-кода на страницу используйте шорт-код `[bg_counter type='post' id='1234' now='true']` или php-функцию `bg_az_counter_views ($type, $id, $now);` в шаблоне записи (поста).
Параметры ***type*** и ***ID*** описаны выше, если задан параметр ***now*** с значением ***true*** (или любое значение кроме null, false, 0, ""), то будут отображаться количество пользователей, просматривающих в данный момент страницу и общее количество просмотров страницы.
Если параметрам ***type*** и/или ***ID*** заданы пустые значения, то будет выведено общее количество просмотров и онлайн-посетителей на сайте.
В случае ***now=false*** (или 0, "") - только общее количество просмотров страницы.
Если этот параметр не задан (или задан как ***now=null***), то используется значение, заданное в настройках плагина.
Задавайте функцию `bg_az_counter_views` в шаблоне страниц так:
```php
<?php if (function_exists('bg_az_counter_views')) {echo bg_az_counter_views ('post', $post->ID);} ?>
```
Эти две основные функции плагина реализованы на JavaScript, работают только на стороне клиента в реальном времени и не зависят от наличия и способа кеширования страниц.
Параметры для JS-скрипта (в плагине задаются автоматически):
```html
<script>
var bg_counter = {
"counterurl":"https://stat.azbyka.ru/counters", // Всегда
"websocket":"wss://stat.azbyka.ru/realtime-view", // Всегда
"project":"/project/propovedi", // Имя текущего проекта
"type":"post", // Пока только "post" или пусто для ID=""
"ID":"1234", // ID поста или пусто, чтобы не собирать статистику
"debug":"" // Выводить или нет инфу в консоль
};
</script>
```
### Выводит на экран список популярных постов.
Для этого используйте шорт-код `[bg_counter_top_posts limit='10' number='true']` или php-функцию `getPopularPosts ($limit, $number);`, где ***limit ($limit)*** - количество постов в списке, ***number ($number) = true*** - нумерованный список, ***false*** - ненумерованный.
В настройках плагина можно задать периодичность обновления списка популярных постов: моментально, каждый час, ежедневно, еженедельно, ежемесячно, ежегодно.
Поскольку эта возможность реализована на серверной стороне WP необходимо согласовать это время с обновлением кеш страниц.
Формат вывода списка на экран:
```html
<ul class="bg-az-top-posts">
<li>
<a href="https://azbyka.ru/.../?p=186" title="...">...</a> - <span class="bg-az-count">...</span>
</li>
<li>
<a href="https://azbyka.ru/.../?p=263" title="...">...</a> - <span class="bg-az-count">...</span>
</li>
...
</ul>
```
Для вывода списка популярных постов в боковую панель используйте **виджет "Популярные записи"**, который работает аналогично соответствующему шорт-коду.
**Виджет "Сейчас на сайте"**, выводит в боковую панель количество онлайн-посетителей на сайте и общее количество просмотров страниц.
## Импорт данных, архивирование и валидация данных
Плагин позволяет загрузить на сервер данные из плагинов **Post Views Counter** и/или **WP Popular Posts**, а также из произвольных полей **"views"**.
Кроме того плагин ежедневно сохраняет архив данных в файле `wp-content/uploads/bg_az_counter.json`, которые при необходимости можно также загрузить на сервер.
В случае возникновения проблем при сохранении архива ошибки фиксируются в логе плагина: `wp-content/plugins/bg-az-counter/bg_counter.log`.
Чтобы удалить лишние записи с сервера достаточно обнулить значения счетчика.
При ежедневном архивировании данных происходит их проверка на валидность.
Проверяется есть ли в БД WP запись с данным **ID**, имеет ли эта запись тип *'post'*, *'page'* или ползователский тип, а статус - *'publish'*.
Все некорректные записи обнуляются и будут удалены на сервере.
**Внимание!** После удаления плагина файл `wp-content/uploads/bg_az_counter.json` **НЕ будет удален**! При необходимости, удалите его вручную.
Плагин **Bg Az-Counter** обеспечивает работу клиентской части системы подсчета количества посещений страниц на базе Redis-based сервера `https://stat.azbyka.ru`. Код и описание работы сервера [см. здесь](https://gitlab.eterfund.ru/azbyka/stats-server). ## Плагин выполняет следующие функции: ### 1. Передает на сервер информацию об открытии страницы пользователем ### 2. Запрашивает сервер и отображает на странице количество пользователей, просматривающих в данный момент страницу и общее количество просмотров страницы. Для этого на странице должны быть размещена следующая HTML-разметка: ```html <span class="bg-az-counter" data-type="post" data-ID="1234"> <span class="bg-az-counter-now"></span> <span class="bg-az-counter-views"></span> </span> ``` где * ***data-type*** - тип записи (пока поддерживается только *post*, но при желании можно сделать *category*, *mark* и что-нибудь еще), * ***data-ID*** - ID записи (объекта). Для вставки HTML-кода на страницу используйте шорт-код `[bg_counter type='post' id='1234' now='true']` или php-функцию `bg_az_counter_views ($type, $id, $now);` в шаблоне записи (поста). Параметры ***type*** и ***ID*** описаны выше, если задан параметр ***now*** с значением ***true*** (или любое значение кроме null, false, 0, ""), то будут отображаться количество пользователей, просматривающих в данный момент страницу и общее количество просмотров страницы. Если параметрам ***type*** и/или ***ID*** заданы пустые значения, то будет выведено общее количество просмотров и онлайн-посетителей на сайте. В случае ***now=false*** (или 0, "") - только общее количество просмотров страницы. Если этот параметр не задан (или задан как ***now=null***), то используется значение, заданное в настройках плагина. Задавайте функцию `bg_az_counter_views` в шаблоне страниц так: ```php <?php if (function_exists('bg_az_counter_views')) {echo bg_az_counter_views ('post', $post->ID);} ?> ``` ### 3. Создает форму для оценки пользователем поста Для вставки формы на страницу используйте шорт-код `[bg_az_rating type='post' id='1234']` или php-функцию `bg_az_counter_rating ($type, $id);` в шаблоне записи (поста). Параметры ***type*** и ***ID*** те же, что и для счетчика просмотров страницы и описаны выше. По умолчанию ***type = 'post'*** и/или ***ID = <ID текущего поста>***. Задавайте функцию `bg_az_counter_views` в шаблоне страниц так: ```php <?php if (function_exists('bg_az_counter_rating')) {echo bg_az_counter_rating ('post', $post->ID);} ?> ``` Форма также формирует снипеты для поисковых ботов: ```html <span itemscope="" itemtype="http://schema.org/AggregateRating"> <meta itemprop="bestRating" content="5" /> <meta itemprop="worstRating" content="1" /> <meta itemprop="author" content="{$author}" /> <meta itemprop="itemReviewed" content="{$page_title}" /> <meta content="{$score}" itemprop="ratingValue"> <meta content="{$votes}" itemprop="ratingCount"> </span> ``` ### 4. Параметры JS-скриптов Описанные выше основные функции плагина реализованы на JavaScript, работают только на стороне клиента в реальном времени и не зависят от наличия и способа кеширования страниц. Параметры для JS-скрипта (в плагине задаются автоматически): ```html <script> var bg_counter = { "counterurl":"https://stat.azbyka.ru/counters", // Всегда "rateurl":"https://stat.azbyka.ru/rate", // Всегда "websocket":"wss://stat.azbyka.ru/realtime-view", // Всегда "project":"/project/propovedi", // Имя текущего проекта "type":"post", // Пока только "post" или пусто для ID="" "ID":"1234", // ID поста или пусто, чтобы не собирать статистику "votes5":"голосов", "votes2":"голоcа", "vote1":"голос", "voted":"Вы уже проголосовали", "price":["ужасно", "плохо", "удовлетворительно", "хорошо", "отлично"], "debug":"" // Выводить или нет инфу в консоль }; </script> ``` ### 5. Выводит на экран список популярных постов и рейтинга записей Для вывода списка популярных постов используйте шорт-код `[bg_counter_top_posts limit='10' number='true']` или php-функцию `getPopularPosts ($limit, $number);`, где ***limit ($limit)*** - количество постов в списке, ***number ($number) = true*** - нумерованный список, ***false*** - ненумерованный. В настройках плагина можно задать периодичность обновления списка популярных постов: моментально, каждый час, ежедневно, еженедельно, ежемесячно, ежегодно. Поскольку эта возможность реализована на серверной стороне WP необходимо согласовать это время с обновлением кеш страниц. Формат вывода списка на экран: ```html <ul class="bg-az-top-posts"> <li> <a href="https://azbyka.ru/.../?p=186" title="...">...</a> - <span class="bg-az-count">...</span> </li> <li> <a href="https://azbyka.ru/.../?p=263" title="...">...</a> - <span class="bg-az-count">...</span> </li> ... </ul> ``` Для вывода списка популярных постов используйте шорт-код `[bg_counter_post_rating limit='10' number='true']` или php-функцию `getPostRating ($limit, $number);`, где ***limit ($limit)*** - количество постов в списке, ***number ($number) = true*** - нумерованный список, ***false*** - ненумерованный. Для отображения в боковой панели используйте виджеты **"Популярные записи"** и **"Рейтинг записей"**, который работает аналогично соответствующему шорт-коду. **Виджет "Сейчас на сайте"**, выводит в боковую панель количество онлайн-посетителей на сайте и общее количество просмотров страниц. ## Импорт данных, архивирование и валидация данных Плагин позволяет загрузить на сервер данные из плагинов **Post Views Counter** и/или **WP Popular Posts**, а также из произвольных полей **"views"**. Данные рейтинга постов можно загрузить из плагина **Bg Az-Rating**. Кроме того плагин ежедневно сохраняет архив данных в файлах `wp-content/uploads/bg_az_counter.json` и `wp-content/uploads/bg_az_rating.json`, которые при необходимости можно также загрузить на сервер. В случае возникновения проблем при сохранении архива ошибки фиксируются в логе плагина: `wp-content/plugins/bg-az-counter/bg_counter.log`. Чтобы удалить лишние записи с сервера достаточно обнулить значения счетчиков. При ежедневном архивировании данных происходит их проверка на валидность. Проверяется есть ли в БД WP запись с данным **ID**, имеет ли эта запись тип *'post'*, *'page'* или ползователский тип, а статус - *'publish'*. Все некорректные записи обнуляются и будут удалены на сервере. **Внимание!** После удаления плагина файлы `wp-content/uploads/bg_az_counter.json` и `wp-content/uploads/bg_az_rating.json` **НЕ будут удалены**! При необходимости, удалите их вручную.
\ No newline at end of file
......
......@@ -3,7 +3,7 @@
Plugin Name: Bg Az-Counter
Plugin URI: https://bogaiskov.ru
Description: Подсчет количества посещений страниц на базе stat.azbyka.ru
Version: 2.0
Version: 2.0.1
Author: VBog
Author URI: https://bogaiskov.ru
License: GPL2
......
......@@ -250,8 +250,11 @@ function setAllRatings ($request) {
******************************************************************************************/
// Регистрируем шорт-код bg_az_rating
add_shortcode( 'bg_az_rating', 'bg_az_rating_shortcode' );
// Регистрируем шорт-код bg_counter_post_rating
add_shortcode( 'bg_counter_post_rating', 'bg_counter_post_rating_shortcode' );
// [bg_az_rating]
// Выводит на экран форму для голосования
function bg_az_rating_shortcode( $atts ) {
extract( shortcode_atts( array(
'type' => null,
......@@ -267,6 +270,17 @@ function bg_az_rating_shortcode( $atts ) {
$quote = bg_az_counter_rating($type, $id);
return "{$quote}";
}
// [bg_counter_post_rating limit='10']
// Выводит на экран список популярных постов
function bg_counter_post_rating_shortcode( $atts ) {
global $post;
extract( shortcode_atts( array(
'limit' => '10',
'number' => false
), $atts ) );
$quote = getPostRating ($limit, 0, (bool)$number);
return "{$quote}";
}
// Склоняем слово "голос"
function bg_counter_txt_votes ($votes){
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment