XP System
XP is stored in {prefix}or_xp (not user meta) for performance.
XP actions are configured in Gamification → XP Actions. Default actions:
| Action Key | Label | Default XP |
|---|---|---|
register | Register | 50 |
login | Daily Login | 5 |
fill_profile | Complete Profile | 30 |
post_comment | Comment | 10 |
create_post | Publish Post | 25 |
follow_user | Follow a User | 5 |
send_message | Send a Message | 3 |
Daily login XP is only awarded once per calendar day (checked via or_last_xp_login user meta).
Levels
Levels defined in Gamification → Levels as name + minimum XP threshold. Default:
| Level | Name | Min XP |
|---|---|---|
| 1 | Newcomer | 0 |
| 2 | Member | 100 |
| 3 | Regular | 300 |
| 4 | Active | 700 |
| 5 | Veteran | 1,500 |
| 6 | Expert | 3,000 |
| 7 | Master | 6,000 |
| 8 | Legend | 12,000 |
Level is recalculated and synced to {prefix}or_xp.level every time XP is awarded.
Streak System
StreakEngine::record_login()called on every successful login- Streak increments if last login was yesterday; resets to 1 if gap > 1 day
- Longest streak tracked separately
Leaderboard
Cached query with 5-minute transient TTL. Cache key: or_leaderboard_{type}_{limit}.
