Публикация в группе: Кастомизация WP-Recall и Wordpress

Добавлено в закладки: 1

В личку попросили поделиться системой опыта, которая организована на моем сайте, так что напишу это тут, может кому еще будет интересно.

Внимание! Если вы полный ноль в php и не понимаете что тут написано (или вы считаете что мой код - быдлокод) проходите мимо. Разжевать куда и что вставлять, если вы вообще ничего не понимаете я не смогу, в таком случае вам легче найти какой-то плагин с похожим функционалом (например cubepoints)

Система очень примитивная, но возможно кто-то возьмет её за базу и сделает нормальный плагин, ну или просто вдохновиться и напишет все сам.

Итак, начнем с формулы конвертирования опыта в уровень и обратно. В нашем случае это будет:

 

Пример:

Опыта на уровень нам надо будет:

  1. 100
  2. 269
  3. 480
  4. 725
  5. 997
  6. 1293
  7. 1612
  8. 1950
  9. 2308
  10. 2683
  11. ....

А 37856 опыта будут соответствовать уровню 64

Вы можете самостоятельно отредактировать формулу, тогда кол-во опыта на уровень будет другое.

 

Теперь нам необходимо создать 2 таблицы (вы можете использовать для этого доп. поля профиля, мне удобнее отдельные таблицы)

В нашем случае это будут таблицы:

wp_day_user_exp (со столбцами user_id | date | exp) - таблица в которой будет хранится количества опыта набранного пользователем за сутки (дальше узнаете зачем)

wp_total_user_exp (со столбцами user_id | total_exp ) - таблица с общим опытом пользователя за все время

Теперь нам нужно как-то наполнять таблицы с опытом за активность на сайте. В нашем случае мы будет давать опыт за:

  1. Повышение рейтинга пользователя
  2. Если он добавил пост
  3. Если он добавил комментарий

 

Теперь нам нужна функция которая будет переводить общий опыт пользователя из базы в уровень, вычислять опыт на следующий уровень и возвращать результат в виде готового html кода

 

Мои css стили для результата:

В результате функция:

Вернет что-то типа:

 

Что будет выглядеть как:

 

 

Ну и небольшой бонус. Если вы помните, то мы создавали таблицу с опытом который набирает пользователь за сутки. Давайте используем её содержимое что бы вывести пользователей с наибольшим числом опыта за неделю.

 

В результате получим что-то типа этого:

 

 

P.S.

Как вы могли заметить у нас таблицы

wp_day_user_exp

wp_total_user_exp

имеют префикс wp - если у вас он другой, либо впишите свой, либо используйте

 

Рейтинг: 4

Автор публикации

не в сети 39 минут

Preci

75

1

Комментарии: 52Публикации: 13Регистрация: 11-11-2014Продаж/Покупок: 12/14