Commit 5873f023 authored by Vadim's avatar Vadim

Version 0.7

1. Настройка "Просматривают сейчас"
parent 9ddccc4a
...@@ -21,7 +21,13 @@ ...@@ -21,7 +21,13 @@
Для вставки HTML-кода на страницу используйте шорт-код `[bg_counter type='post' id='1234' now='true']` или php-функцию `bg_az_counter_views ($type, $id, $now);` в шаблоне записи (поста). Для вставки HTML-кода на страницу используйте шорт-код `[bg_counter type='post' id='1234' now='true']` или php-функцию `bg_az_counter_views ($type, $id, $now);` в шаблоне записи (поста).
Параметры ***type*** и ***ID*** описаны выше, если задан параметр ***now*** с любым значением, то будут отображаться количество пользователей, просматривающих в данный момент страницу и общее количество просмотров страницы. В противном случае - только общее количество просмотров страницы. Параметры ***type*** и ***ID*** описаны выше, если задан параметр ***now*** с значением ***true*** (или любое значение кроме null, false, 0, ""), то будут отображаться количество пользователей, просматривающих в данный момент страницу и общее количество просмотров страницы.
В случае ***now=false** (или 0, "") - только общее количество просмотров страницы.
Если этот параметр не задан (или задан как ***now=null***), то используется значение, заданное в настройках плагина.
Задавайте функцию `bg_az_counter_views` в шаблоне страниц так:
`<?php if (function_exists('bg_az_counter_views')) {echo bg_az_counter_views ('post', $post->ID);} ?>`
Эти две основные функции плагина реализованы на JavaScript, работают только на стороне клиента в реальном времени и не зависят от наличия и способа кеширования страниц. Эти две основные функции плагина реализованы на JavaScript, работают только на стороне клиента в реальном времени и не зависят от наличия и способа кеширования страниц.
...@@ -46,6 +52,7 @@ ...@@ -46,6 +52,7 @@
Для вывода списка популярных постов в боковую панель используйте **виджет "Популярные записи"**, который работает аналогично соответствующему шорт-коду. Для вывода списка популярных постов в боковую панель используйте **виджет "Популярные записи"**, который работает аналогично соответствующему шорт-коду.
Плагин позволяет загрузить на сервер данные из плагина **WP Popular Posts**, а также ежедневно сохраняет архив данных в файле `wp-content/uploads/bg_az_counter.json`, которые при необходимости можно также загрузить на сервер. Плагин позволяет загрузить на сервер данные из плагина **WP Popular Posts**, а также ежедневно сохраняет архив данных в файле `wp-content/uploads/bg_az_counter.json`, которые при необходимости можно также загрузить на сервер.
В случае возникновения проблем при сохранении архива ошибки фиксируются в логе плагина: `wp-content/plugins/bg-az-counter/bg_counter.log`.
**Внимание!** После удаления плагина файл `wp-content/uploads/bg_az_counter.json` **НЕ будет удален**! При необходимости, удалите его вручную. **Внимание!** После удаления плагина файл `wp-content/uploads/bg_az_counter.json` **НЕ будет удален**! При необходимости, удалите его вручную.
...@@ -3,7 +3,7 @@ ...@@ -3,7 +3,7 @@
Plugin Name: Bg Az-Counter Plugin Name: Bg Az-Counter
Plugin URI: https://bogaiskov.ru Plugin URI: https://bogaiskov.ru
Description: Подсчет количества посещений страниц на базе stat.azbyka.ru Description: Подсчет количества посещений страниц на базе stat.azbyka.ru
Version: 0.4 Version: 0.7
Author: VBog Author: VBog
Author URI: https://bogaiskov.ru Author URI: https://bogaiskov.ru
License: GPL2 License: GPL2
...@@ -38,7 +38,7 @@ if ( !defined('ABSPATH') ) { ...@@ -38,7 +38,7 @@ if ( !defined('ABSPATH') ) {
die( 'Sorry, you are not allowed to access this page directly.' ); die( 'Sorry, you are not allowed to access this page directly.' );
} }
define('BG_COUNTER_VERSION', '0.4.2'); define('BG_COUNTER_VERSION', '0.7.0');
define('BG_COUNTER_LOG', dirname(__FILE__ ).'/bg_counter.log'); define('BG_COUNTER_LOG', dirname(__FILE__ ).'/bg_counter.log');
define('BG_COUNTER_STAT_COUNTERS','https://stat.azbyka.ru/counters'); define('BG_COUNTER_STAT_COUNTERS','https://stat.azbyka.ru/counters');
define('BG_COUNTER_STAT_RAITING','https://stat.azbyka.ru/rating'); define('BG_COUNTER_STAT_RAITING','https://stat.azbyka.ru/rating');
...@@ -57,12 +57,19 @@ function bg_counter_deinstall() { ...@@ -57,12 +57,19 @@ function bg_counter_deinstall() {
delete_option('bg_archive_status'); delete_option('bg_archive_status');
delete_option('bg_counter_period'); delete_option('bg_counter_period');
} }
//delete_option('bg_wppp_loaded'); // Снять комментарий, чтобы сбросить флаг загрузки из WP Popular Posts
if (!isset($project)) { if (!isset($project)) {
$project = wp_parse_url( site_url(), PHP_URL_PATH ); $project = wp_parse_url( site_url(), PHP_URL_PATH );
if (!$project) $project = '/main'; // Главный сайт if (!$project) $project = '/main'; // Главный сайт
$project = '/project'.$project; $project = '/project'.$project;
} }
// Таблица стилей для плагина
function bg_counter_enqueue_frontend_styles () {
wp_enqueue_style( "bg_counter_styles", plugins_url( '/css/styles.css', plugin_basename(__FILE__) ), array() , BG_COUNTER_VERSION );
}
add_action( 'wp_enqueue_scripts' , 'bg_counter_enqueue_frontend_styles' );
// Настройки плагина // Настройки плагина
include_once ("inc/options.php"); include_once ("inc/options.php");
// Виджеты // Виджеты
...@@ -109,7 +116,7 @@ function bg_counter_daily_action () { ...@@ -109,7 +116,7 @@ function bg_counter_daily_action () {
// Сохраняем архив результатов // Сохраняем архив результатов
$result = bg_counter_saveStatictics(); $result = bg_counter_saveStatictics();
if ($result !== false) update_option( 'bg_archive_status', "<div class='notice notice-info'><p><b>".date("Y-m-d H:i:s", time())."</b> сохранено <b>". $result ."</b> записей в файле архива статистики: <code>". BG_COUNTER_ARCHIVE ."</code></p></div>" ); if ($result !== false) update_option( 'bg_archive_status', "<div class='notice notice-info'><p><b>".date("Y-m-d H:i:s", time())."</b> сохранено <b>". $result ."</b> записей в файле архива статистики: <code>". BG_COUNTER_ARCHIVE ."</code></p></div>" );
else update_option( 'bg_archive_status', "<div class='notice notice-error'><p><b>".date("Y-m-d H:i:s", time())."</b> Ошибка при сохранении данных статистки</p></div>" ); else update_option( 'bg_archive_status', "<div class='notice notice-error'><p><b>".date("Y-m-d H:i:s", time())."</b> Ошибка при сохранении данных статистки. См. журнал ошибок: <code>". BG_COUNTER_LOG ."</code></p></div>" );
} }
...@@ -149,7 +156,17 @@ function getPopularPosts ($limit, $offset=0) { ...@@ -149,7 +156,17 @@ function getPopularPosts ($limit, $offset=0) {
$option = get_option('bg_counter_options'); $option = get_option('bg_counter_options');
$result = wp_remote_get (BG_COUNTER_STAT_RAITING.$project."?limit=".$limit."&offset=".$offset."&type=post"); $result = wp_remote_get (BG_COUNTER_STAT_RAITING.$project."?limit=".$limit."&offset=".$offset."&type=post");
if( is_wp_error( $result ) ) return false; if( is_wp_error( $result ) ) {
error_log( PHP_EOL .date("Y-m-d H:i:s ", time())." РЕЙТИНГ. Ошибка при получении данных с сервера: ".$result->get_error_message(), 3, BG_COUNTER_LOG ); // сообщение ошибки
error_log( " " .$result->get_error_code(), 3, BG_COUNTER_LOG ); // ключ ошибки
return false;
}
if (($code = wp_remote_retrieve_response_code( $result )) != 200) {
error_log( PHP_EOL .date("Y-m-d H:i:s ", time())." РЕЙТИНГ. Сервер вернул код ошибки: ".$code, 3, BG_COUNTER_LOG ); // сообщение ошибки
error_log( " " .wp_remote_retrieve_response_message( $result ), 3, BG_COUNTER_LOG ); // ключ ошибки
return false;
}
$json = wp_remote_retrieve_body($result); $json = wp_remote_retrieve_body($result);
...@@ -171,7 +188,10 @@ function getPopularPosts ($limit, $offset=0) { ...@@ -171,7 +188,10 @@ function getPopularPosts ($limit, $offset=0) {
set_transient( $the_key, $quote, $option['period'] ); set_transient( $the_key, $quote, $option['period'] );
} }
return $quote; return $quote;
} else return false; } else {
error_log( PHP_EOL .date("Y-m-d H:i:s ", time())." РЕЙТИНГ. Сервер вернул ответ неудачи: ".print_r($response, true), 3, BG_COUNTER_LOG );
return false;
}
} }
/***************************************************************************************** /*****************************************************************************************
POST /set-counter/<path> POST /set-counter/<path>
...@@ -189,22 +209,50 @@ POST /set-counter/project/test/author/1/book/3 ...@@ -189,22 +209,50 @@ POST /set-counter/project/test/author/1/book/3
{"success": true} {"success": true}
******************************************************************************************/ ******************************************************************************************/
function setCounts ($path, $counter) { // Установить 1 счетчик
function setCount ($path, $counter) {
global $project; global $project;
$result = wp_remote_post (BG_COUNTER_STAT_SET.$project.$path, array('body' => '{"counter": '.$counter.'}')); $result = wp_remote_post (BG_COUNTER_STAT_SET.$project.$path, array('body' => '{"counter": '.$counter.'}'));
if( is_wp_error( $result ) ) { if( is_wp_error( $result ) ) {
echo "<br>".$result->get_error_message(); // сообщение ошибки echo "<br>".$result->get_error_message(); // сообщение ошибки
echo "<br>".$result->get_error_code(); // ключ ошибки echo "<br>".$result->get_error_code(); // ключ ошибки
error_log( PHP_EOL .date("Y-m-d H:i:s ", time())." СЧЁТЧИК. Ошибка при получении данных с сервера: ".$result->get_error_message(), 3, BG_COUNTER_LOG ); // сообщение ошибки
error_log( " " .$result->get_error_code(), 3, BG_COUNTER_LOG ); // ключ ошибки
return false; return false;
} }
$json = wp_remote_retrieve_body($result); $json = wp_remote_retrieve_body($result);
$response = json_decode($json, false); $response = json_decode($json, false);
if ($response->success) return true; if ($response->success) return true;
else echo $json; else {
return false; echo $json;
error_log( PHP_EOL .date("Y-m-d H:i:s ", time())." СЧЁТЧИК. Сервер вернул ответ неудачи: ".print_r($response, true), 3, BG_COUNTER_LOG );
return false;
}
}
// Установить ВСЕ счетчики проекта
function setAllCounts ($request) {
global $project;
$result = wp_remote_post (BG_COUNTER_STAT_SET, array('body' => $request));
if( is_wp_error( $result ) ) {
echo "<br>".$result->get_error_message(); // сообщение ошибки
echo "<br>".$result->get_error_code(); // ключ ошибки
error_log( PHP_EOL .date("Y-m-d H:i:s ", time())." ВСЕ СЧЁТЧИКИ. Ошибка при получении данных с сервера: ".$result->get_error_message(), 3, BG_COUNTER_LOG ); // сообщение ошибки
error_log( " " .$result->get_error_code(), 3, BG_COUNTER_LOG ); // ключ ошибки
return false;
}
$json = wp_remote_retrieve_body($result);
$response = json_decode($json, false);
if ($response->success) return true;
else {
echo $json;
error_log( PHP_EOL .date("Y-m-d H:i:s ", time())." ВСЕ СЧЁТЧИКИ. Сервер вернул ответ неудачи: ".print_r($response, true), 3, BG_COUNTER_LOG );
return false;
}
} }
...@@ -213,7 +261,7 @@ function setCounts ($path, $counter) { ...@@ -213,7 +261,7 @@ function setCounts ($path, $counter) {
Отображает разметку текста для отображения кол-ва просмотров Отображает разметку текста для отображения кол-ва просмотров
и кол-ва читающих пост пользователей и кол-ва читающих пост пользователей
******************************************************************************************/ ******************************************************************************************/
function bg_az_counter_views ($type='', $id='', $now='') { function bg_az_counter_views ($type='', $id='', $now=null) {
if (is_single() || is_page()) { if (is_single() || is_page()) {
if (empty($id)) { if (empty($id)) {
...@@ -224,9 +272,13 @@ function bg_az_counter_views ($type='', $id='', $now='') { ...@@ -224,9 +272,13 @@ function bg_az_counter_views ($type='', $id='', $now='') {
$type='post'; $type='post';
} }
} }
if (is_null($now)) {
$option = get_option('bg_counter_options');
$now = $option['now'];
}
if (!empty($type) && !empty($id)) { if (!empty($type) && !empty($id)) {
$views = '<i title="Просмотры страницы" class="fa fa-eye"></i> <span class="bg-az-counter-views"></span>'; $views = '<i title="Просмотры страницы" class="fa fa-eye"></i> <span class="bg-az-counter-views"></span>';
$users = ' <i title="Сейчас читают страницу" class="fa fa-users"></i> <span class="bg-az-counter-now"></span>'; $users = ' <i title="Сейчас читают страницу" class="fa fa-user"></i> <span class="bg-az-counter-now"></span>';
$quote = '<span class="bg-az-counter" data-type="'.$type.'" data-ID="'.$id.'">'.$views.($now?$users:'').'</span>'; $quote = '<span class="bg-az-counter" data-type="'.$type.'" data-ID="'.$id.'">'.$views.($now?$users:'').'</span>';
return $quote; return $quote;
} else return ""; } else return "";
...@@ -248,7 +300,7 @@ function bg_counter_shortcode( $atts ) { ...@@ -248,7 +300,7 @@ function bg_counter_shortcode( $atts ) {
extract( shortcode_atts( array( extract( shortcode_atts( array(
'type' => '', 'type' => '',
'id' => '', 'id' => '',
'now' => '' 'now' => null
), $atts ) ); ), $atts ) );
$quote = bg_az_counter_views ($type, $id, $now); $quote = bg_az_counter_views ($type, $id, $now);
return "{$quote}"; return "{$quote}";
...@@ -272,16 +324,27 @@ function bg_counter_top_posts_shortcode( $atts ) { ...@@ -272,16 +324,27 @@ function bg_counter_top_posts_shortcode( $atts ) {
******************************************************************************************/ ******************************************************************************************/
function bg_counter_getWPPopularPosts() { function bg_counter_getWPPopularPosts() {
global $wpdb; global $wpdb;
global $project;
// Получить данные из таблицы // Получить данные из таблицы
// postid(bigint(20)), day(datetime), last_viewed(datetime), pageviews(bigint(20)) // postid(bigint(20)), day(datetime), last_viewed(datetime), pageviews(bigint(20))
$data = $wpdb->get_results("SELECT postid,pageviews FROM wp_popularpostsdata", ARRAY_A); $old_data = $wpdb->get_results("SELECT postid,pageviews FROM wp_popularpostsdata", ARRAY_A);
// Отправить данные на сервер
// Формируем запрос
$i = 0; $i = 0;
foreach ($data as $row) { $data = array();
if (!setCounts ('/post/'.$row['postid'], $row['pageviews'])) return false; $point = array();
foreach ($old_data as $row) {
$point['path'] = $project.'/post/'.$row['postid'];
$point['counter'] = (int)$row['pageviews'];
$data[] = $point;
$i++; $i++;
} }
$json = json_encode($data, JSON_UNESCAPED_SLASHES);
echo $json."<br>";
// Отправить данные на сервер
if (!setAllCounts ($json)) return false;
return $i; return $i;
} }
...@@ -301,24 +364,31 @@ function bg_counter_saveStatictics() { ...@@ -301,24 +364,31 @@ function bg_counter_saveStatictics() {
while ($count >= $limit) { while ($count >= $limit) {
$result = wp_remote_get (BG_COUNTER_STAT_RAITING.$project."?limit=".$limit."&offset=".$offset."&type=post"); $result = wp_remote_get (BG_COUNTER_STAT_RAITING.$project."?limit=".$limit."&offset=".$offset."&type=post");
if( is_wp_error( $result ) ) { if( is_wp_error( $result ) ) {
error_log( PHP_EOL .date("Y-m-d H:i:s ", time()).$result->get_error_message(), 3, BG_COUNTER_LOG ); // сообщение ошибки error_log( PHP_EOL .date("Y-m-d H:i:s ", time())." АРХИВ. Ошибка при получении данных с сервера: ".$result->get_error_message(), 3, BG_COUNTER_LOG ); // сообщение ошибки
error_log( " " .$result->get_error_code(), 3, BG_COUNTER_LOG ); // ключ ошибки error_log( " " .$result->get_error_code(), 3, BG_COUNTER_LOG ); // ключ ошибки
return false; return false;
} }
if (($code = wp_remote_retrieve_response_code( $result )) != 200) {
error_log( PHP_EOL .date("Y-m-d H:i:s ", time())." АРХИВ. Сервер вернул код ошибки: ".$code, 3, BG_COUNTER_LOG ); // сообщение ошибки
error_log( " " .wp_remote_retrieve_response_message( $result ), 3, BG_COUNTER_LOG ); // ключ ошибки
return false;
}
$json = wp_remote_retrieve_body($result); $json = wp_remote_retrieve_body($result);
$response = json_decode($json, false); $response = json_decode($json, false);
if (!$response->success) { if (!$response->success) {
error_log( PHP_EOL .date("Y-m-d H:i:s ", time()).print_r($response, true), 3, BG_COUNTER_LOG ); error_log( PHP_EOL .date("Y-m-d H:i:s ", time())." АРХИВ. Сервер вернул ответ неудачи: ".print_r($response, true), 3, BG_COUNTER_LOG );
return false; return false;
} }
$count = count($response->data); $count = count($response->data);
if ($count) $data = array_merge($data, $response->data); if ($count) $data = array_merge($data, $response->data);
$offset += $limit; $offset += $limit;
} }
$json = json_encode($data); $json = json_encode($data, JSON_UNESCAPED_SLASHES);
if (file_put_contents ( ABSPATH.BG_COUNTER_ARCHIVE, $json ) === false) { if (file_put_contents ( ABSPATH.BG_COUNTER_ARCHIVE, $json ) === false) {
error_log( PHP_EOL .date("Y-m-d H:i:s ", time())."Ошибка записи в файл ".BG_COUNTER_ARCHIVE, 3, BG_COUNTER_LOG ); error_log( PHP_EOL .date("Y-m-d H:i:s ", time())." АРХИВ. Ошибка записи в файл: ".BG_COUNTER_ARCHIVE, 3, BG_COUNTER_LOG );
return false; return false;
} }
return ($offset-$limit+$count); return ($offset-$limit+$count);
...@@ -329,20 +399,30 @@ function bg_counter_saveStatictics() { ...@@ -329,20 +399,30 @@ function bg_counter_saveStatictics() {
******************************************************************************************/ ******************************************************************************************/
function bg_counter_sendArchiveData() { function bg_counter_sendArchiveData() {
global $project;
// Получить данные из файла архива // Получить данные из файла архива
$json = file_get_contents ( ABSPATH.BG_COUNTER_ARCHIVE); $json = file_get_contents ( ABSPATH.BG_COUNTER_ARCHIVE);
if (!$json) { if (!$json) {
echo "<br>" ."Ошибка чтения файла ".BG_COUNTER_ARCHIVE; echo "<br>" ."Ошибка чтения файла: ".BG_COUNTER_ARCHIVE;
return false; return false;
} }
$data = json_decode($json, true); $old_data = json_decode($json, true);
// Отправить данные на сервер // Формируем запрос
$i = 0; $i = 0;
foreach ($data as $row) { $data = array();
if (!setCounts ('/'.$row['type'].'/'.$row['id'], $row['value'])) return false; $point = array();
foreach ($old_data as $row) {
$point['path'] = $project.'/'.$row['type'].'/'.$row['id'];
$point['counter'] = $row['value'];
$data[] = $point;
$i++; $i++;
} }
$json = json_encode($data, JSON_UNESCAPED_SLASHES);
echo $json."<br>";
// Отправить данные на сервер
if (!setAllCounts ($json)) return false;
return $i; return $i;
} }
.widget-item .bg-az-top-posts {
margin: 5px;
padding: 0;
}
.widget-item .bg-az-top-posts li {
padding: 5px;
list-style-type: none;
}
.widget-item .bg-az-top-posts>li:before {
content: '';
display: inline-block;
width: 4px;
height: 4px;
margin-right: 5px;
vertical-align: middle;
background: #90694a;
border: none;
border-radius: 50%;
}
.widget-item li a {
color: black;
}
.widget-item li .bg-az-count {
color: #999;
}
.widget-item li:hover {
background: #fff;
color: #e88f57;
transition: all .4s ease;
}
\ No newline at end of file
...@@ -4,13 +4,16 @@ ...@@ -4,13 +4,16 @@
*******************************************************************************************/ *******************************************************************************************/
// Начальные значения // Начальные значения
add_option('bg_counter_options', array('period'=>DAY_IN_SECONDS, 'debug'=>0, 'archive'=>0, 'wppp'=>0)); add_option('bg_counter_options', array('period'=>DAY_IN_SECONDS, 'now'=>0, 'debug'=>0, 'archive'=>0, 'wppp'=>0));
add_option('bg_wppp_loaded', ''); add_option('bg_wppp_loaded', '');
$val = get_option('bg_counter_options'); $val = get_option('bg_counter_options');
if (!isset($val['period'])) { if (!isset($val['period'])) {
$val['period'] = DAY_IN_SECONDS; $val['period'] = DAY_IN_SECONDS;
update_option( 'bg_counter_period', $val['period'] ); update_option( 'bg_counter_period', $val['period'] );
} }
if (!isset($val['now'])) {
$val['now'] = 0;
}
if (!isset($val['debug'])) { if (!isset($val['debug'])) {
$val['debug'] = 0; $val['debug'] = 0;
} }
...@@ -95,6 +98,7 @@ function bg_counter_settings(){ ...@@ -95,6 +98,7 @@ function bg_counter_settings(){
// параметры: $id, $title, $callback, $page, $section, $args // параметры: $id, $title, $callback, $page, $section, $args
add_settings_field('bg_counter_period', 'Периодичность обработки данных', 'fill_bg_counter_period', 'bg_counter_page', 'section_1' ); add_settings_field('bg_counter_period', 'Периодичность обработки данных', 'fill_bg_counter_period', 'bg_counter_page', 'section_1' );
add_settings_field('bg_counter_now', 'Просматривают сейчас', 'fill_bg_counter_now', 'bg_counter_page', 'section_1' );
add_settings_field('bg_counter_debug', 'Включить отладку', 'fill_bg_counter_debug', 'bg_counter_page', 'section_1' ); add_settings_field('bg_counter_debug', 'Включить отладку', 'fill_bg_counter_debug', 'bg_counter_page', 'section_1' );
add_settings_field('bg_counter_archive', 'Загрузить данные из архива на сервер', 'fill_bg_counter_sendArchive', 'bg_counter_page', 'section_1' ); add_settings_field('bg_counter_archive', 'Загрузить данные из архива на сервер', 'fill_bg_counter_sendArchive', 'bg_counter_page', 'section_1' );
add_settings_field('bg_counter_wppp', 'Загрузить данные из WP Popular Posts на сервер', 'fill_bg_counter_wppp', 'bg_counter_page', 'section_1' ); add_settings_field('bg_counter_wppp', 'Загрузить данные из WP Popular Posts на сервер', 'fill_bg_counter_wppp', 'bg_counter_page', 'section_1' );
...@@ -119,6 +123,15 @@ function fill_bg_counter_period(){ ...@@ -119,6 +123,15 @@ function fill_bg_counter_period(){
} }
## Заполняем опцию 2 ## Заполняем опцию 2
function fill_bg_counter_now(){
$val = get_option('bg_counter_options');
$val = $val ? $val['now'] : null;
?>
<label><input type="checkbox" name="bg_counter_options[now]" value="1" <?php checked(1, $val ); ?>/> (отображать количество пользователей, просматривающих запись в данный момент)</label>
<?php
}
## Заполняем опцию 3
function fill_bg_counter_debug(){ function fill_bg_counter_debug(){
$val = get_option('bg_counter_options'); $val = get_option('bg_counter_options');
$val = $val ? $val['debug'] : null; $val = $val ? $val['debug'] : null;
...@@ -163,9 +176,15 @@ function bg_counter_sanitize_callback( $options ){ ...@@ -163,9 +176,15 @@ function bg_counter_sanitize_callback( $options ){
if( $name == 'period' ) if( $name == 'period' )
$val = intval( $val ); $val = intval( $val );
if( $name == 'now' )
$val = intval( $val );
if( $name == 'debug' ) if( $name == 'debug' )
$val = intval( $val ); $val = intval( $val );
if( $name == 'archive' )
$val = intval( $val );
if( $name == 'wppp' ) if( $name == 'wppp' )
$val = intval( $val ); $val = intval( $val );
} }
......
<?php <?php
class bg_counter_TopPostsWidget extends WP_Widget { class bg_counter_TopPostsWidget extends WP_Widget {
/* // создание виджета
* создание виджета
*/
function __construct() { function __construct() {
parent::__construct( parent::__construct(
'bg_counter_top_widget', 'bg_counter_top_widget',
...@@ -12,9 +10,7 @@ class bg_counter_TopPostsWidget extends WP_Widget { ...@@ -12,9 +10,7 @@ class bg_counter_TopPostsWidget extends WP_Widget {
); );
} }
/* // фронтэнд виджета
* фронтэнд виджета
*/
public function widget( $args, $instance ) { public function widget( $args, $instance ) {
$title = apply_filters( 'widget_title', $instance['title'] ); // к заголовку применяем фильтр (необязательно) $title = apply_filters( 'widget_title', $instance['title'] ); // к заголовку применяем фильтр (необязательно)
$posts_per_page = $instance['posts_per_page']; $posts_per_page = $instance['posts_per_page'];
...@@ -37,9 +33,7 @@ class bg_counter_TopPostsWidget extends WP_Widget { ...@@ -37,9 +33,7 @@ class bg_counter_TopPostsWidget extends WP_Widget {
echo $args['after_widget']; echo $args['after_widget'];
} }
/* // бэкэнд виджета
* бэкэнд виджета
*/
public function form( $instance ) { public function form( $instance ) {
if ( isset( $instance[ 'title' ] ) ) { if ( isset( $instance[ 'title' ] ) ) {
$title = $instance[ 'title' ]; $title = $instance[ 'title' ];
...@@ -59,9 +53,7 @@ class bg_counter_TopPostsWidget extends WP_Widget { ...@@ -59,9 +53,7 @@ class bg_counter_TopPostsWidget extends WP_Widget {
<?php <?php
} }
/* // сохранение настроек виджета
* сохранение настроек виджета
*/
public function update( $new_instance, $old_instance ) { public function update( $new_instance, $old_instance ) {
$instance = array(); $instance = array();
$instance['title'] = ( ! empty( $new_instance['title'] ) ) ? strip_tags( $new_instance['title'] ) : ''; $instance['title'] = ( ! empty( $new_instance['title'] ) ) ? strip_tags( $new_instance['title'] ) : '';
...@@ -70,9 +62,7 @@ class bg_counter_TopPostsWidget extends WP_Widget { ...@@ -70,9 +62,7 @@ class bg_counter_TopPostsWidget extends WP_Widget {
} }
} }
/* // регистрация виджета
* регистрация виджета
*/
function bg_counter_top_posts_widget_load() { function bg_counter_top_posts_widget_load() {
register_widget( 'bg_counter_TopPostsWidget' ); register_widget( 'bg_counter_TopPostsWidget' );
} }
......
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