Top user by rating - очередное чудо моей мысли, которое позволит вам выводить топ пользователей по рейтингу за определенный промежуток времени, а так же создавать свои шаблоны вывода.
Вывод ТОПа пользователей
Вывод происходит через шорткод [ top_user_rating ] который может принимать следующие атрибуты:
templates - имя шаблона для вывода пользователей.
По-умолчанию "block" (в комплекте на данный момент 3 шаблона: block, list и mini)
Для создания своего шаблона можете посмотреть готовые примеры в папке templates, которая внутри папки дополнение. Даете своему шаблону имя user-tubr-ВАШЕИМЯ.php и помещаете его в папку /wp-content/wp-recall/templates/
Шаблон "mini" создан для вывода в сайдбаре, для него я рекомендую отключать параметр sorting (sorting="0")
sorting - включать или нет вывод списка для сортировки, по-умолчанию включено. (1 - включено, 0 - выключено)
По-умолчанию "1"
При включении перед ТОПом пользователей отобразится выпадающий список, в котором вы сможете выбрать за какой промежуток отобразить ТОП. Обновление ТОПа происходит через ajax без перезагрузки страницы. По-умолчанию selected установлено на "За месяц", однако если вы выберете свой промежуток времени через параметр day (ниже) то в селект добавится новый options с вашим кол-вом дней и он будет selected.
limit - Сколько пользователей отображать. (при включенной навигации отвечает за кол-во юзеров на странице)
По-умолчанию "50"
day - За какой промежуток времени считать набранный рейтинг.
По-умолчанию "30"
Если установить значение "0" то будет считаться рейтинг за все время.
period - За какой период считать рейтинг, указывается как начальная дата:конечная дата.
Пример: 2016-03-01:2016-03-18 (год-месяц-день)
Так же в этот параметр можно указать:
{current_week} - будет считаться рейтинг за текущую неделю
{current_month} - будет считаться рейтинг за текущий месяц
По-умолчанию "" - ничего
paged - укажите 1 что бы включить навигацию
По-умолчанию "" - выключена
exclude - позволяет исключить пользователей из рейтинга по id. Для исключения нескольких пользователей перечисляйте их id через запятую
По-умолчанию "" - пусто.
type - для подсчета только определенного типа рейтинга (post - записи, comment - комментарии)
По-умолчанию "" - пусто, весь рейтинг
role - для включения в рейтинг только определенные роли пользователей. Указывается цифрами
10 - Admin, 7 - Editor, 2 - Author, 1 - Contributor, 0 - Subscriber
По-умолчанию: "" - пусто, учитываются все роли
cache_time - Время кеширования результата, ajax не кешируется.
По-умолчанию: "86400" - сутки
Примечание: Я постарался сделать код таким, что бы на одной странице можно было разместить сколько угодно шорткодов (ну мало ли) вроде это получилось, по-крайней мере если зайти на страницу с ТОПом и в сайдбаре так же будет ТОП пользователей, то при ajax обновлении обновится только тот топ, который вы хотите обновить.
На этом вроде все с шорткодом, давайте дальше перейдем к примерам, а затем я покажу код одного из шаблонов вывода с комментариями, чтобы вы могли сделать свой шаблон.
Примеры ТОПов
[ top_user_rating ]
(параметров нет, значит используются по-умолчанию)
[ top_user_rating sorting="0" limit="10" ]
( выключим блок с сортировкой, установим лимит пользователей в 10)
[ top_user_rating templates="list" day="100" ]
(Используем для вывода шаблон "list" и выберем промежуток в 100 дней)
[ top_user_rating templates="mini" day="30" sorting="0" limit="10" ]
(Используем для вывода шаблон "mini" выберем промежуток в 30 дней, установим ограничение пользователей в 10(limit="10"), отключим sorting, а так же выведем это чудо через do_shortcode() в сайдбаре)
Вроде все примеры.
Формирование своего шаблона
Тут я приведу код шаблона list с максимальными пояснениями, но в целом что вас стоит знать:
В шаблоне вам будут доступны 2 переменные из дополнения:
$top_user - Массив.
$top_user["object_author"] -> ID текущего юзера
$top_user["total_rating"] -> Суммарный рейтинг
$position - Обычный каунтер в цикле, в данном случает будет соответствовать уровню пользователя в ТОПе
$firstCheck - текущий счетчик цикла, проверяйте на единицу для вывода заголовка таблицы и т.п.
<?php /* $user_id - id пользователя $rating - рейтинг пользователя за промежуток $user_info - инфа о пользователе (get_userdata()) */ //Записываем id юзера для удобства $user_id = $top_user["object_author"]; //Записываем суммарный рейтинг за промежуток для удобства $rating = $top_user["total_rating"]; //Берем инфо юзера $user_info = get_userdata($user_id); ?> <?php //Текущий пользователь (не в рейтинге, а кто его смотрит) global $user_ID; //Если текущий пользователь равен пользователю в рейтинге - значит он видит себя //Выделим его в рейтинге if ($user_id == $user_ID) { $your = 'style="font-weight:bold;"'; } else { $your = false; } //Выведем 1 раз заголовок рейтинга, что-то типо заголовка таблицы if ($firstCheck== 1) { ?> <div class="tubr-user-title"> <div class="tubr-user-position">Место</div> <div class="tubr-user-name">Пользователь</div> <div class="tubr-user-rating">Получено рейтинга</div> </div> <?php } ?> //Тут ничего нового <div class="tubr-user" data-user-id="<?php echo $user_id ;?>" <?php echo $your; ?>> <div class="tubr-user-position"><?php echo $position; ?></div> <div class="tubr-user-name"> <a href="/author/<?php echo $user_info->user_login; ?>/" target="_blank"> <?php echo $user_info->display_name; ?> </a> </div> <div class="tubr-user-rating"> <div class="tubr-user-value"><?php echo $rating; ?></div> </div> </div>
Спасибо Андрею за консультации )
Стандартная. Выбрать архив с дополнением и нажать "Установить". Или ручками поместить папку дополнения в /wp-content/wp-recall/add-on/
* Добавлена поддержка wp-recall 16.22.3+
= 2.0.3
* Исправлена ошибка, когда при выводе ТОПа за все время минусовой рейтинг отображался как плюсовой
= 2.0.2 =
* Добавлен параметр role для шорткода, позволяющий включать в рейтинг только определенные роли пользователей. Роли указываются числами, значения:
* 10 - Admin, 7 - Editor, 2 - Author, 1 - Contributor, 0 - Subscriber
= 2.0.1 =
* Фикс выпадающего меню фильтрации
= 2.0 =
* Добавлена навигация
* Добавлены опции для настройки фильтров
= 1.8.1 =
* fa -> rcli
= 1.8 =
* Исправлена ошибка с подсчетом рейтинга при указании разных параметров
= 1.7 =
* Добавлен новый шаблон list2
= 1.6 =
* Добавлен атрибут period для указания промежутка подсчета рейтинга. См. комментарии к дополнению
= 1.5 =
* Изменен вывод рейтинга за все время, теперь работает быстрее
* Добавлена возможность вывести место пользователя в ЛК, в области counters
* Внимание! С этой версии по-умолчанию параметр day = 0 т.е. рейтинг за все время!
= 1.4 =
* Добавлено больше вариантов выбора промежутка в выпадающем меню сортировки
= 1.3 =
* Добавлена поддержка кеша recall
* Добавлен атрибут exclude для исключения пользователей из рейтинга по их ID
* Добавлен атрибут type для вывода ТОПа пользователей основываясь на определенном типе рейтинга
* Атрибут cache_time при включении кеша recall можете указать свое время кеша, по-умолчанию 86400 (сутки)
* Вроде что-то еще сделал, а вроде нет, уже не помню, ну ладно...
= 1.2 =
* Фикс получения ссылки на страницу пользователя
= 1.1 =
* Если отображаем ТОП за все время, то берем данные из таблицы rating_totals, иначе из rating_values
= 1.0 =
* Релиз
Авторам этого проекта огромный респект от BMW0911 )) 8)
где можно прочитать что изменилось в дополнениях после обновлений.
Если автор ведет список изменений - есть вкладка Changelog. Тут она есть. Будьте внимательны - вкладки в описании товара несут полезную информацию.
Как данное дополненные работает в 2021? Кто может подсказать?? 🙂
Все работает, доп обновлялся под последние изменения recall