DEV Community

Polanger
Polanger

Posted on

Building a YouTube-Style Video Platform Inside a Single WordPress Plugin

For a long time, building a real video platform on WordPress meant one thing: plugin soup.

A video player plugin here. A monetization add-on there. A separate live streaming tool. Another plugin for user profiles.

Then you spend two weeks trying to make them all talk to each other — half of them conflict, the other half need custom glue code, and the whole thing becomes a maintenance nightmare before you even launch.

Most developers who tried building a serious video platform on WordPress have been through this cycle.

So when we started building Polanger VideoHub, the core decision was made very early:

One plugin. One architecture. Everything integrated natively.

Instead of stitching together 6–8 plugins, we wanted to design something closer to what a backend developer would architect from scratch — modular, predictable, and extensible.

This is how we approached it.

The Core Problem

Most WordPress video plugins fall into two categories:

1. Embed Wrappers

They take a YouTube URL and render a player. That's it.

You still need additional plugins for:

  • monetization
  • user channels
  • playlists
  • live chat
  • subscriptions
  • uploads

Which leads straight back to the plugin soup problem.

2. Bloated All-in-One Plugins

These try to solve everything at once.

The downside is that they usually:

  • load every feature whether you use it or not
  • add unnecessary database queries
  • increase page weight
  • become hard to maintain

And ironically, they still end up needing add-ons.

We wanted a different approach — something closer to a platform architecture than a typical plugin.

Architecture: A Modular Add-on System

The biggest architectural decision was going fully modular from day one.

Every major feature in VideoHub is built as a separate module.

Examples include:

  • Live streaming
  • Monetization
  • Shorts
  • Creator marketplace
  • Ads system
  • Video optimizer
  • PWA support
  • Search engine
  • Comments & reactions

Each module:

  • has its own settings panel
  • loads only when activated
  • communicates with the core using WordPress hooks and filters
  • can be disabled without breaking other modules

The core plugin provides the shared infrastructure while modules register themselves through a central add-on manager.

For example, modules can hook into core events like this:

do_action( 'pvh_video_uploaded', $video_id, $file_path );

This allows modules to extend functionality without modifying the core plugin.

Platform Components

Video Engine

The core video engine supports multiple sources:

  • Self-hosted videos
  • YouTube
  • Vimeo
  • Dailymotion

Features include playlists, autoplay support, responsive player layouts and channel-based video organization.

Shorts System

Inspired by TikTok and YouTube Shorts, this module provides a vertical swipeable video feed designed primarily for mobile users.

Live Streaming & Chat

Live streaming support includes an integrated real-time chat system that works both for live streams and regular video content.

Creator Channels

Each creator can have their own public channel page including profile information, video libraries and subscriber counts.

This layer effectively turns WordPress users into platform creators.

Monetization (WooCommerce Integration)

Instead of reinventing payments, the platform integrates deeply with WooCommerce.

Pay-per-view videos are simply WooCommerce products.

This provides access to the full WooCommerce ecosystem:

  • payment gateways
  • order management
  • refund system
  • customer accounts

Access control happens automatically when orders are completed or refunded.

Creator Marketplace

On top of WooCommerce sits the creator marketplace layer which provides:

  • revenue split calculation
  • creator earnings dashboards
  • withdrawal requests
  • payout profiles
  • commission management

Data Layer

Videos are stored using a custom post type.

However, high-volume data such as analytics and view counters use dedicated database tables to avoid performance problems.

Storing these inside wp_postmeta would cause serious scalability issues for larger video platforms.

Self-Hosted Video Optimization (FFmpeg)

For self-hosted videos, the platform includes a background optimization pipeline powered by FFmpeg.

Videos are uploaded immediately while optimization happens asynchronously via a processing queue.

Processing includes:

  • codec normalization
  • mobile compatible pixel format
  • fast-start playback optimization
  • optional resolution limits

Fast-start playback allows videos to begin playing before the entire file is downloaded.

One important note: FFmpeg is typically unavailable on shared hosting environments, so this feature is primarily intended for VPS or dedicated server setups.

Developer Extension Points

The platform exposes multiple hooks allowing developers to extend functionality.

Examples include:

  • video upload events
  • processing pipeline hooks
  • player source filters
  • monetization access control
  • creator payout logic

Everything follows standard WordPress action/filter patterns, so developers can extend the system without learning a proprietary SDK.

What We Learned

The most valuable outcome wasn't any single feature — it was the consistency of the architecture.

A site can start as a simple video library and later enable monetization, creator channels, marketplace functionality or live streaming without restructuring the installation.

That flexibility was the primary design goal from the beginning.

Resources


Built with WordPress, WooCommerce, FFmpeg and a lot of refactoring.

Top comments (1)

Some comments may only be visible to logged-in visitors. Sign in to view all comments.