WP Manifestindependent plugin directory
manifest / media / mh-video-player

Kheradban Player

Professional, RTL-native video player for WordPress — chapters, multi-language subtitles, adaptive quality, watermarking, theater mode, smart sharing & more. Fully self-hosted, zero CDN.

by Kheradban Engineering Team · github.com/mhajloo/mh-video-player · website

0stars
0forks

Install

No release zip yet. The repository archive installs, but the folder name will carry the branch suffix and updates will not flow:

wp plugin install https://github.com/mhajloo/mh-video-player/archive/refs/heads/master.zip

Readme

Kheradban Player

Version WordPress 6.0+ PHP 8.1+ License: GPL-2.0-or-later

خردبان پلیر، یک پلیر ویدیوی حرفه‌ای، ساخته‌شده برای وردپرس فارسی

اگر تا امروز برای نمایش حرفه‌ای ویدیو در وردپرس مجبور بوده‌اید بین یک پلیر ساده و بی‌امکانات یا یک سرویس خارجیِ وابسته به اینترنت بین‌الملل و CDN یکی را انتخاب کنید، خردبان پلیر دقیقاً برای همین شکاف ساخته شده: یک پلیر کاملاً حرفه‌ای، کاملاً راست‌به‌چپ و کاملاً خوداتکا — همه‌چیز از خود پلیر تا آیکون‌ها و فونت‌ها همراه افزونه میزبانی می‌شود و هیچ درخواستی به هیچ سرور خارجی ارسال نمی‌گردد.

🔗 دموی زنده: demo.hajloo.ir/kheradban

آنچه از یک پلیر حرفه‌ای انتظار دارید، همه اینجاست:

  • 🎬 کتابخانهٔ ویدیو اختصاصی — هر ویدیو را مثل یک محتوای واقعی در وردپرس مدیریت کنید؛ با شورت‌کد [player id="…"]، ویجت اختصاصی المنتور، یا جایگزینی خودکار پلیر پیش‌فرض وردپرس نمایشش دهید.
  • 🗂️ فصل‌بندی و خط زمانی حرفه‌ای — ویدیوهای طولانی را به فصل‌های قابل‌کلیک تقسیم کنید، با لینک مستقیم و قابل‌اشتراک به هر لحظه.
  • 💬 زیرنویس چندزبانه — هر تعداد زبان که بخواهید، هم‌زمان و قابل‌انتخاب برای بیننده.
  • 🎚️ چند کیفیت پخش با سوییچ خودکار — از کیفیت پایین تا 1080p و بالاتر، متناسب با سرعت اینترنت بیننده.
  • فهرست سرعت پخش دلخواه — سرعت‌های استاندارد یا سفارشی خودتان را تعریف کنید.
  • 🎞️ مقدمه و پایان‌بندی هوشمند — Intro/Outro با دکمهٔ رد شدن از مقدمه، به‌صورت سراسری یا اختصاصی برای هر ویدیو.
  • 📢 تبلیغ پیش از پخش — یک کلیپ تبلیغاتی پیش از شروع ویدیوی اصلی، برای درآمدزایی هوشمند.
  • 💧 واترمارک و لوگو — متن یا تصویر، با موقعیت، اندازه، شفافیت و لینک دلخواه.
  • 🖼️ پیش‌نمایش لحظه‌ای روی نوار پخش — با نگه‌داشتن نشانگر روی نوار پیشرفت، بیننده پیش‌نمایش همان لحظه را می‌بیند.
  • 🖥️ حالت سینمایی (Theater Mode) — تجربهٔ تماشای بدون حواس‌پرتی، تمام‌عرض.
  • ⬇️ دانلود ویدیو — با یک کلیک، در صورت فعال بودن.
  • 🔗 اشتراک‌گذاری هوشمند — کپی لینک، کپی لینک همراه با زمان دقیق پخش، و اشتراک مستقیم در تلگرام، واتس‌اپ، ایکس و فیسبوک.
  • ⏯️ ادامهٔ پخش از همان‌جا — کاملاً سمت مرورگر کاربر، بدون نیاز به حساب کاربری یا ذخیره‌سازی سمت سرور.
  • ⌨️ کلیدهای میانبر کاملاً قابل بازتعریف — پلیر را دقیقاً همان‌طور که خودتان می‌خواهید با کیبورد کنترل کنید.
  • 🧩 یکپارچگی کامل با المنتور و ACF — ویجت اختصاصی با پشتیبانی از تگ‌های پویا؛ منبع ویدیو را حتی می‌توانید به یک فیلد ACF دلخواه (مثلاً ویدیوی معرفی هر محصول) متصل کنید.
  • 🛠️ Developer API و REST API کامل — برای توسعه‌دهندگانی که می‌خواهند پلیر را در قالب یا افزونهٔ خودشان به کار بگیرند.
  • 🎨 پیش‌نمایش زندهٔ ظاهر — رنگ اصلی، رنگ تأکیدی و گردی گوشه‌ها را در تنظیمات عوض کنید و همان لحظه، بدون هیچ build مجدد، در سایت ببینید.
  • بهینه‌سازی خودکار برای پخش فوری — هر ویدیویی که آپلود می‌شود، به‌صورت خودکار برای پخش سریع (بدون بافرینگ اولیه) بازنویسی می‌شود؛ حتی فایل‌های چندصد مگابایتی.
  • 🔒 امنیت و حریم خصوصی به‌صورت پیش‌فرض — بدون هیچ درخواست به CDN یا سرور خارجی؛ هر فرم دارای nonce و بررسی سطح دسترسی، و هر ورودی/خروجی به‌درستی پاک‌سازی و escape می‌شود.

و همهٔ این‌ها، از پنل مدیریت گرفته تا خود پلیر، صد‌درصد راست‌به‌چپ و فارسی.


A professional, RTL-native (Persian-first) video player plugin for WordPress, built on top of Plyr. Fully self-hosted — Plyr, icons, and fonts all ship with the plugin, and it never makes a request to any third-party CDN. See Features below for the full technical breakdown.

🔗 Live demo: demo.hajloo.ir/kheradban

Table of contents

Features

  • Video Library — a dedicated kp_video post type, authored either through native postmeta or ACF (interchangeable via a setting), placed with [player id="…"] / [player slug="…"], or by automatically replacing WordPress's own [video] shortcode and core/video block.
  • Player — chapters and a professional timeline with deep links, multi-language subtitles, multiple quality renditions, a configurable speed list, Intro/Outro with a skip button, watermark and logo overlays, theater mode, download, share (copy link, copy link with timestamp, Telegram/WhatsApp/X/Facebook), client-side Resume Playback (no account required), and fully remappable keyboard shortcuts.
  • Two player tiers — any Video Library entry is Professional (every feature above); a bare post/page video is Simple (Plyr's baseline controls only). See Player tiers.
  • Elementor — a dedicated widget with a real Video Library picker, per-instance overrides, and dynamic-tag support (bind the video source to an ACF field or any other dynamic source).
  • ACF — usable as an alternative Video Library storage backend.
  • Developer API — procedural PHP helpers (kheradban_player_render(), kheradban_player_get_video(), kheradban_player_has_video()), a window.KheradbanPlayer JS facade, and a full REST API under kheradban-player/v1.
  • Admin panel — Dashboard, Video Library, Settings, Appearance (with a live preview — no rebuild step), Translations, Integrations, Tools (import/export/reset), About.
  • Performance & security by default — lazy-loaded assets (nothing is enqueued on a page that never renders a player), fast-start optimization on every video upload (MP4 moov atom moved to the front, so playback starts instantly on large files), nonces and capability checks on every form, escaped output and sanitized/validated input throughout.

Screenshots

Front-end player Video Library (admin)
Front-end player Video Library admin list
Appearance — live preview Elementor widget
Appearance live preview Elementor widget

Requirements

  • WordPress 6.0+
  • PHP 8.1+

Installation

  1. Download the latest release zip from the Releases page.
  2. In WordPress, go to Plugins → Add New → Upload Plugin and upload the zip.
  3. Activate Kheradban Player.
  4. Configure it from the Kheradban Player admin menu, then add your first video under Kheradban Player → Videos → Add New.

Player tiers

Simple Professional
Applies to Any bare post/page video (auto-replace, shortcode/block with no Video Library entry) Any video backed by a Video Library (kp_video) entry
Controls Play/Pause, Progress, Time, Duration, Volume, Mute, Speed, Fullscreen, PiP Everything in Simple, plus every feature below
Chapters & timeline
Subtitles
Quality switching
Intro / Outro
Watermark & logo
Theater mode
Download
Share
Resume playback
Remappable keyboard shortcuts

Tiers are derived automatically from where the video comes from — there's nothing to configure.

Building from source

The repository ships source SCSS/JS; a build step compiles the CSS used at runtime.

npm install
npm run build

npm run dev produces unminified CSS for local iteration; npm run watch:css rebuilds on change.

Development

  • No PHP build step — the plugin uses its own PSR-4-style autoloader (app/Autoloader.php), not Composer's.
  • composer.json only pulls in dev tooling (PHPCS + WordPress Coding Standards) for linting: composer lint / composer lint:fix.
  • Coding standard: a PSR-12 base with WordPress.Security.* / WordPress.DB.* / WP.I18n sniffs layered on top — see phpcs.xml.dist.
  • Architecture in brief: a reflection-based autowiring DI container, hook-registering modules, and everything programmed against contracts/interfaces rather than concrete classes — see the app/ tree (Core, Providers, Modules, Contracts, Services) for the layering.

Contributing

Issues and pull requests are welcome. For anything non-trivial, please open an issue first to discuss the change — especially for anything touching the player's Simple/Professional tier boundary or the no-CDN, self-hosted-assets rule, both of which are deliberate product constraints, not oversights.

License

GPL-2.0-or-later — see LICENSE.

Read the full README on GitHub →