WPMediaVerse
WPMediaVerse — A general-purpose WordPress media platform plugin
by vapvarun, wbcomdesigns · github.com/vapvarun/wpmediaverse · website
Install
The author publishes release zips, so WP-CLI can install straight from GitHub:
wp plugin install https://github.com/vapvarun/wpmediaverse/releases/download/v2.4.1/wpmediaverse-2.4.1.zipReadme
WPMediaVerse
The media layer your community site is missing. Custom database tables, AI moderation, direct messaging, and a full social layer — without requiring BuddyPress. The only WordPress media plugin that doesn't store uploads in wp_posts.
Built by vapvarun & Wbcom Designs
Try Live Demo · Download Free · Get Pro · Documentation · Announcement
Why WPMediaVerse? Every other WordPress media plugin (rtMedia, MediaPress, BuddyBoss Media) stores uploads in
wp_posts. On active communities, that table grows into tens of thousands of mixed rows. WPMediaVerse uses 22 dedicated, indexed MySQL tables — media queries never touch your posts, pages, or products. Performance stays predictable at 100,000+ media items.
What's New in 2.4.0
Documents get a real home, and My Media becomes a set of addressable sections.
- New: A document drive per member (with Pro) — folders, trash and restore, targeted sharing to a member or a role, in-drive search. Documents are deliberately not photos and do not live in the media library.
- New:
use_mvs_documentscapability answers "may this member have a document library at all", separately from whether they may upload and from whether a given file is readable. Granted to every role by default, because it arrives on a feature that already shipped. - New: Every My Media section is a URL (
/my-media/<slug>/), painted server-side on first load. Editing your profile became a section, which returned about 110px at the top of every visit. - Improve: Documents admin gained a single view and edit screen, writing through the same path the REST API uses so the two cannot drift.
- Fix: Album IDs are evicted from
mvs_media_index. Albums had been writingwp_postsIDs into a table whose primary key auto-increments for media — on a site where uploads have outrun post IDs, creating an album overwrote a real photo's slug and privacy. - Fix: A missing
vendor/took the whole site down rather than the plugin. Runtime dependencies now ship underlibs/and the autoloader is hand-written, so there is no Composer autoloader that can go missing.
Full release notes · Changelog (below)
What Can You Build?
WPMediaVerse is designed to power any media-centric WordPress site:
| Use Case | How |
|---|---|
| Photo Sharing Community | BuddyPress profiles + groups + reactions + albums |
| Portfolio Gallery | Media grid blocks + albums + privacy controls |
| Digital Asset Library | Upload + organize + search + access rules |
| Membership Media Portal | Signed URLs + lock overlay + payment bridges |
| Client File Delivery | Access codes + signed URLs + download tracking |
| Stock Photo Marketplace | Watermark preview + purchase gates + checkout |
| Team Collaboration | Group media + albums + activity stream + notifications |
| Social Intranet | BuddyPress + reactions + comments + mentions + favorites |
| Learning Platform Media | Albums as course media + privacy per role |
| Video/Audio Hub | Media player block + view tracking + playlists |
Feature Overview
Upload & Storage
- Drag & drop uploader with MIME validation and size limits
- Automatic EXIF GPS stripping for privacy protection
- Duplicate detection via file hash
- Extension blocklist and double-extension blocking
- Storage driver pattern — local default, extensible to S3, BunnyCDN, or custom via filter (Pro)
- Organized file storage in
wp-content/uploads/wpmediaverse/
Media Organization
- Albums — Ordered collections with cover images, drag-to-reorder, auto-cover fallback
- Playlists — Audio albums with sequential playback
- Smart Collections — Auto-curated based on rules (type, tag, date range, author)
- Stories — Time-limited Instagram-style media with auto-cleanup via WP Cron
- Tags & Categories — Full taxonomy support with tag cloud, merge, rename, and autocomplete
Privacy & Access Control
| Level | Description |
|---|---|
public |
Visible to everyone |
loggedin |
Visible to logged-in users |
friends |
Visible to BuddyPress friends only |
group |
Visible to group members only |
private |
Visible to owner only |
custom |
Fine-grained access rules |
- Access rules engine supporting: role, capability, membership, purchase, subscription, redemption code
- Signed URLs with HMAC-SHA256 for time-limited, gated media delivery — every thumbnail surface routes through signed URLs as of 1.1.3
- Range request support for video/audio streaming through signed URLs
- Lock overlay block with blurred preview for paywalled content
- Payment bridge with hooks for Stripe/WooCommerce integration
Direct Messaging
- 1:1 private messaging between users
- Group conversations with multi-user participants
- Read receipts with per-user last-read state
- Message reactions, edit, delete (within configurable window)
- Media attachments via existing upload pipeline
- BP notification dispatch + REST polling transport
Social Layer
| Feature | Details |
|---|---|
| Reactions | 6 types: like, love, haha, wow, sad, angry — one per user per media |
| Comments | Threaded via WP comment system, with mention support |
| Favorites | Bookmark media into personal collections |
| Mentions | @mention users in comments — triggers notifications |
| Follows | User-to-user follow relationships |
| Sharing | Generate share links for Facebook, Twitter, LinkedIn, email |
| Stats | Views, downloads, reactions — per-media and per-user aggregation |
| Activity | BuddyPress activity stream with thumbnails and lightbox |
| Notifications | In-app + BuddyPress notification queue |
| Reports | User-submitted abuse reports with moderator review |
| Blocks | User-to-user blocklist for DM/comment safety |
AI-Powered Moderation
- OpenAI Vision (GPT-4) for automatic content analysis and tagging
- Provider abstraction — bring your own AI via
mvs_ai_providershook - Budget tracking with monthly limits and cost-per-analysis controls
- Auto-actions: flag, hide, or reject based on moderation score
- Admin moderation queue with approve/reject workflow
- Async processing via Action Scheduler (sync fallback when unavailable)
BuddyPress Integration
Deeply integrated with BuddyPress — all features activate automatically when BP is detected:
| Feature | Profile | Groups |
|---|---|---|
| Media grid with upload | /members/{user}/media/ |
/groups/{slug}/media/ |
| Albums with create | /members/{user}/media/albums/ |
/groups/{slug}/media/albums/ |
| Single album with add media | /members/{user}/media/albums/{slug}/ |
/groups/{slug}/media/albums/{slug}/ |
| Sub-tab navigation | Media | Albums | Media | Albums |
| Activity on upload | "uploaded a new photo: X" | "uploaded a new photo: X in the group Y" |
Additional BP features:
- Activity media attachment — Photo/Video button in "What's New" form (1-6 per post)
- Multi-image grid layout in activity stream (Facebook-style)
- Full-viewport lightbox on activity media — images, video player, audio player (reactions, comments, favorites, share)
- BP notifications for reactions, comments, mentions, and DMs
- Media count badge on profile tab ("Media 49")
- Activity filter dropdown includes Media Uploads
Gutenberg Blocks
12 blocks, all powered by the WordPress Interactivity API — zero legacy JavaScript:
| Block | Slug | Description |
|---|---|---|
| Media Upload | mvs/media-upload |
Drag & drop file uploader with REST integration |
| Media Grid | mvs/media-grid |
Filterable grid with lightbox and lazy loading |
| Media Player | mvs/media-player |
Video/audio player with view tracking |
| Album Viewer | mvs/album-viewer |
Album display with ordered items |
| Story Viewer | mvs/story-viewer |
Instagram-style stories carousel |
| Media Stats | mvs/media-stats |
User stats dashboard cards |
| Media Social | mvs/media-social |
Social actions bar (reactions, comments, share) |
| Explore Feed | mvs/explore-feed |
Public explore feed with search and filters |
| Explore View | mvs/explore-view |
Explore page layout with browse modes |
| Dashboard View | mvs/dashboard-view |
User dashboard (My Media, Albums, Favorites) |
| Shared UI | mvs/shared-ui |
Lightbox shell (image/video/audio), FAB uploader, shared components |
| Lock Overlay | mvs/lock-overlay |
Paywall overlay with blurred preview + unlock prompt |
WPMediaVerse Pro adds 12 more blocks: the four layout feeds plus tournament, challenge, battle, leaderboard and compete-hub blocks.
Shortcodes
8 shortcodes — drop media features into any page or widget:
[mvs_gallery] Filterable media grid
[mvs_gallery columns="4" count="12" type="image" category="nature"]
[mvs_upload] Upload form
[mvs_upload max_files="10" show_privacy="true"]
[mvs_album id="123"] Album viewer
[mvs_album id="123" columns="3" show_title="true"]
[mvs_player id="456"] Media player
[mvs_player id="456" autoplay="false" loop="true"]
[mvs_stats] Stats dashboard
[mvs_stats views="true" downloads="true" reactions="true" top_media="5"]
[mvs_dashboard] User dashboard (My Media / Albums / Favorites)
[mvs_collection id="789"] Smart collection viewer
[mvs_profile_edit] In-place profile editor
Template Override System
Copy templates to your theme for full customization:
your-theme/wpmediaverse/
├── media-single.php Single media item (social UI, owner actions)
├── album.php Single album display
├── explore.php Explore/archive page (search + tag cloud)
├── dashboard.php User dashboard (My Media / Albums / Favorites)
├── messages.php Direct message inbox + thread view
└── shortcodes/ Per-shortcode template parts
REST API
80+ endpoints across 18 controllers under mvs/v1/ for full headless/decoupled usage:
| Endpoint Group | Routes | Methods |
|---|---|---|
| Media | /media, /media/{id}, /media/{id}/view, /me/media |
GET, POST, PUT, DELETE |
| Albums | /albums, /albums/{id}, /albums/{id}/items, /albums/{id}/reorder |
GET, POST, PUT, DELETE |
| Collections | /collections, /collections/{id}, /collections/{id}/rules |
GET, POST, PUT, DELETE |
| Reactions | /media/{id}/reactions |
GET, POST, DELETE |
| Comments | /media/{id}/comments, /media/{id}/comments/{cid} |
GET, POST, DELETE |
| Favorites | /media/{id}/favorite, /me/favorites |
GET, POST, DELETE |
| Follows | /users/{id}/follow, /me/following, /me/followers |
GET, POST, DELETE |
| Tags | /tags, /tags/cloud, /tags/merge, /tags/{id} |
GET, POST, PUT |
| Stats | /media/{id}/stats, /me/stats |
GET |
| Profiles | /profiles/{username}, /me/profile |
GET, PUT |
| Notifications | /me/notifications |
GET, PUT |
| Activity | /activity, /activity/{id}/media |
GET, POST |
| Access Rules | /media/{id}/rules, /media/{id}/grant, /me/grants |
GET, POST, DELETE |
| Signed URLs | /media/{id}/signed-url, /serve |
GET |
| Moderation | /moderation, /moderation/counts, /moderation/{id}/approve |
GET, POST |
| Bulk | /media/bulk |
POST |
| Reports | /media/{id}/report |
POST |
| Users | /users, /users/{id} |
GET |
All endpoints support proper authentication (nonce + cookie), validation, rate limiting middleware, and error handling.
Admin Dashboard
| Page | Description |
|---|---|
| Overview | At-a-glance stats (media count, albums, pending, total views), quick action links, recent uploads, system status |
| Settings | 5 tabs: General, Display (grid/pagination/thumbnails), Permissions (role x capability matrix), AI & Moderation, Webhooks |
| Moderation | Review flagged/pending media with approve/reject, AI analysis results, flag pills |
| Stats | Top media by views, reactions summary, AI usage metrics |
| All Media | Custom listing page with filters, search, bulk actions (replaces CPT edit.php) |
| Log Viewer | Internal error log with severity filter |
| Setup Wizard | First-run configuration walkthrough |
Read the full README on GitHub →
Releases
| Tag | Published | Asset | Downloads |
|---|---|---|---|
| v2.4.1 | Sep 2, 2026 | wpmediaverse-2.4.1.zip | 6 |
| v2.4.0 | Aug 31, 2026 | wpmediaverse-2.4.0.zip | 2 |
| v2.3.2 | Aug 7, 2026 | wpmediaverse-2.3.2.zip | 16 |
| v2.3.1 | Aug 5, 2026 | wpmediaverse-2.3.1.zip | 4 |
| v2.3.0 | Aug 2, 2026 | wpmediaverse-2.3.0.zip | 5 |
| v2.2.1 | Jul 24, 2026 | wpmediaverse-2.2.1.zip | 10 |
| v2.2.0 | Jul 23, 2026 | wpmediaverse-2.2.0.zip | 4 |
| v2.1.0 | Jul 20, 2026 | wpmediaverse-2.1.0.zip | 5 |
| v2.0.0 | Jul 9, 2026 | wpmediaverse-2.0.0.zip | 8 |
| v1.9.0 | Jul 5, 2026 | wpmediaverse-1.9.0.zip | 8 |
| 1.8.0 | Jun 23, 2026 | wpmediaverse-1.8.0.zip | 6 |
| 1.7.0 | Jun 15, 2026 | wpmediaverse-1.7.0.zip | 2 |
| 1.6.0 | Jun 6, 2026 | wpmediaverse-1.6.0.zip | 2 |
| 1.5.0 | May 28, 2026 | wpmediaverse-1.5.0.zip | 6 |
| 1.3.0 | May 17, 2026 | wpmediaverse-1.3.0.zip | 3 |
| v1.2.1 | May 11, 2026 | wpmediaverse-1.2.1.zip | 7 |
| 1.1.3 | Apr 29, 2026 | wpmediaverse-1.1.3.zip | 0 |
| 1.1.3-rc.1 | Apr 22, 2026 | wpmediaverse-1.1.3.zip | 2 |
| v1.1.2 | Apr 17, 2026 | wpmediaverse-1.1.2.zip | 5 |
| v1.1.1 | Apr 10, 2026 | wpmediaverse-1.1.1.zip | 1 |
| v1.1.0 | Apr 6, 2026 | — | — |
| v1.0.0 | Apr 2, 2026 | wpmediaverse-1.0.0.zip | 5 |
Active-site estimate ≈10 comes from the median of recent superseded releases. Method.