The short answer: a video membership site on WordPress needs a membership plugin to take payment and decide who is a member, plus a player that applies that decision to the video itself. Keep the membership plugin you have and put MediaShield on the video, so the login and role checks, the viewer’s name on screen, resume, a device limit per account and watch history all work on the video itself as well as the page around it.
This is the how-to. If you want the case for why a membership site needs this, read the membership sites use case. Below you will find how the pieces fit, how to set them up and what the setup does not cover.
Key points
- Your membership plugin protects pages. The video on a protected page is a separate item with its own address.
- MediaShield’s role check, login check and watermark are in the free plugin.
- There is no built-in connector to specific membership plugins. A short filter, or a role per membership level, connects them.
- The player remembers where each member stopped, and a
[mediashield_my_videos]page lists what they have watched. - Max Concurrent Streams limits how many devices one account can watch on at once. The default is 2.
- Videos from YouTube, Vimeo, Wistia and Bunny keep the host’s own video ID in the embed. Only files on your own server can hide their source address.
What do you need for a video membership site on WordPress?
Four jobs, each handled by a different piece:
- Selling access. A membership or subscription plugin, or an ecommerce plugin with subscriptions, takes payment and gives the buyer a membership level.
- Restricting content. The same plugin hides pages, posts or categories from non-members.
- Hosting video. A host stores and streams the files: YouTube, Vimeo, Wistia, Bunny Stream or your own server.
- Playing video with rules. A player decides who may play each video, who is watching and what you learn from it.
People often assume the second job covers the fourth. It does not completely, and the next section shows why.
Why page protection is not video protection
A membership plugin hides the page. The video on that page is a YouTube, Vimeo or file address in the page’s code. Once a member loads the page, three things follow:
- The video address is on their screen, and they can send it to anyone.
- One login can play on any number of devices at once.
- Nothing on the video says whose account is watching.
None of this means your membership plugin is failing. It is doing the job of protecting pages. The video needs its own checks, which is where a player comes in.
How do I restrict a video to members only?
MediaShield applies five checks in a fixed order each time a watch session starts:
- Administrators always pass. Anyone who can manage options is never blocked.
- Require Login. On by default. Logged-out visitors see a login prompt instead of the player.
- Restrict to Role. Set per video. Only users who hold that exact role can watch.
- Allowed Domains. Sites that may embed your videos. Leave it empty to allow any.
- Custom rules. A filter named
mediashield_can_watchlets your own code or a developer decide.
All of these are in the free plugin. See who can watch and restrict who can watch.
The role match is exact, not a ladder. A video restricted to the Subscriber role refuses an Editor, because an editor does not hold the Subscriber role. Administrators are the one exception.
How do I connect MediaShield to my membership plugin?
MediaShield has no built-in connector for MemberPress, Paid Memberships Pro, Restrict Content Pro or similar plugins. You have two ways to connect them. Both work in the free plugin.
Option 1: one role per membership level. Most membership plugins give a member a WordPress role when they join a level. Create a role for each level, and set Restrict to Role on each video to the role that may watch. A Gold video restricted to the Gold role stays closed to Silver members. The weakness is that the role must be present on the member’s account. Check how your plugin assigns roles, and what it does when a subscription ends.
Option 2: a short filter. If your plugin decides access with its own function, such as “does this user have an active subscription”, call that function from the mediashield_can_watch filter:
add_filter( 'mediashield_can_watch', function ( $result, $video_id, $user_id ) {
if ( ! user_has_active_subscription( $user_id ) ) { // your plugin's own check
return array( 'allowed' => false, 'reason' => 'An active subscription is required.' );
}
return $result;
}, 10, 3 );
Replace user_has_active_subscription with your membership plugin’s own function. MediaShield’s login, role and domain checks run first, and administrators are never blocked. Ask a developer to add this if you are not comfortable editing code. See integrations and hooks and filters.
When a subscription lapses, the check runs again at the start of the next watch session, and for self-hosted files it also runs on every request for the file.
How do I set up a members-only video, step by step?
- Install MediaShield and add the video: MediaShield > Videos > Add New Video. Paste a YouTube, Vimeo, Wistia or Bunny address, or upload a file. Look at Detected Platform to confirm the host. See add your first video.
- Set Protection Level to Standard. This turns on the login gate, the watermark, session tracking and milestones. See protect a paid video.
- Set Restrict to Role if one membership level should see it. Leave it on “Any logged-in user” for all members.
- Publish, then copy the shortcode from the Embed This Video box, or add the MediaShield Video block to the members-only page.
- Keep your membership plugin’s page restriction on that page too. The two layers work together.
- Test as a logged-out visitor, as a member with the right level and as a member with the wrong one. Your administrator account always passes, so do not test with it.
A video in your MediaShield library is protected wherever it appears. A video that was never added to the library is not.
How do I stop members sharing a login?
A membership seat is meant for one person. Two settings address sharing.
- Max Concurrent Streams. In MediaShield > Settings, this caps how many devices one account can watch on at the same time. The default is 2. A third device is refused with “Too many active streams. Please close another video first.” Closing a tab frees the slot at once, and a device silent for 5 minutes stops counting. Guests are never counted.
- The viewer watermark. At Standard protection, the member’s display name and IP address sit over the video and move position every 30 seconds by default. A recording shared outside the site carries the name. Pro adds email, user ID, timestamp, site name or custom text.
A family plan can run a higher limit, and a per-seat business plan a limit of 1. See stop students sharing logins on video courses and stream limits.
How do I keep members coming back to the video library?
Protection should not make the viewing worse. The player has several features that help a library feel good to use:
- Resume playback. Remembers where each member stopped and offers to resume on their next visit. It is on by default and needs Standard or Strict protection, because it relies on watch sessions.
- Sticky player. Keeps the video visible in a corner while the member scrolls. Set it per video.
- End screen. Shows a button at the end, such as a link to the next video.
- Playlists. The
[mediashield_playlist id=15]shortcode plays a queue of videos in one protected player, with the sidebar list of what is next. - A watch history page. The
[mediashield_my_videos]shortcode shows each logged-in member a grid of the videos they have watched, with progress bars. Place it on the member dashboard.
See the player and shortcodes and blocks.
How do I see what members watch?
The Dashboard and Viewers screens show sessions, completion per video and a history per member. That tells you which videos keep members engaged and which ones nobody finishes. Open a member to see every video they started, how far they got and when they were last active.
Pro adds heatmaps and retention curves, a weekly summary email, CSV exports and flags for unusual viewing, such as one account on many IP addresses. The flags appear on a screen. MediaShield does not email you when one is raised. The weekly digest includes the count of unresolved flags. See watch analytics.
Only videos at Standard or Strict protection record sessions. Basic protects the player but records nothing.
Which host should I use for membership videos?
MediaShield works with the host you already pay for. The choice affects what protection you can offer.
| Host | What to know |
|---|---|
| YouTube (unlisted) | Free and reliable. The video ID stays in the embed. See unlisted YouTube videos for courses. |
| Vimeo | A paid host with its own privacy options. The video ID stays in the embed. |
| Wistia | Business-focused hosting with its own player. The video ID stays in the embed. |
| Bunny Stream | Streaming with its own encoding. Pro adds direct playback, which brings the watermark and speed control to Bunny videos. |
| Your own server | Upload or paste a file. Source hiding applies, so the file address is replaced with a permission-checked one. |
The free plugin plays all of them. Connecting a host account to browse and import is Pro. See video hosts.
For files on your own server, the block that stops direct access to uploaded files is an Apache rule. On nginx, add the rule that Tools > Site Health supplies, or the file can be reached without an access check.
What does this setup not do?
Plan around these limits, and say so in your terms if they matter to your members:
- It does not stop screen recording. The watermark makes a recording point back to the account. It does not prevent one.
- The watermark is not in the file. It is drawn over the player. Anyone who holds the original file has a clean copy.
- It does not hide a platform video’s ID. YouTube, Vimeo, Wistia and Bunny embeds carry the host’s own ID by design.
- It does not change your membership plugin. Payments, levels, renewals and emails stay where they are.
- It protects library videos only. Add each video to MediaShield first.
- Alerts are flags on a screen. No email goes out per flag.
A short launch checklist
- Choose your membership plugin and set up levels and roles.
- Add every video to the MediaShield library and set Standard protection.
- Restrict each paid video to the role of the level that owns it.
- Set Max Concurrent Streams to fit your plans.
- Put videos on pages your membership plugin also restricts.
- Add the
[mediashield_my_videos]shortcode to a member dashboard page. - Test with a logged-out visitor, a right-level member and a wrong-level member.
- If you host files yourself on nginx, add the Site Health rule.
- Review the Viewers screen after the first week.
For the wider picture on what protection can and cannot do, read how to protect course videos in WordPress.
Common questions
What do I need to build a video membership site on WordPress?
A membership plugin to sell access and restrict pages, a video host, and a player that checks the viewer on the video. MediaShield is the player. It works beside the membership plugin you already have.
Does MediaShield replace my membership plugin?
No. It does not take payments or manage levels. It applies login and role checks to the video, shows the member’s name on it, limits devices and records watch data. Your membership plugin keeps doing everything else.
Does MediaShield work with MemberPress or Paid Memberships Pro?
There is no built-in connector. You connect them by giving each level a role and setting Restrict to Role on the video, or by adding a short filter that calls your plugin’s own access check. Both work in the free plugin.
Is role-based access a Pro feature?
No. Role restriction is enforced by the free plugin. Pro adds other features such as course-plugin completion, exports and flags for unusual viewing. See pricing.
Can members share their login?
They can try. Max Concurrent Streams refuses extra devices beyond the limit, and the watermark shows the account holder’s name to anyone watching. Neither stops a determined person, but together they make sharing inconvenient.
Can a member copy a YouTube or Vimeo video link?
A signed-in member who can see the player can find the host’s video ID in the page source. MediaShield cannot hide it for platform videos. Source hiding works only for files on your own server.
Do members get to resume where they stopped?
Yes. Resume playback is on by default and works for videos at Standard or Strict protection, since it relies on watch sessions.