Private Media

Ever wanted to make your media truely private? Make sure images, videos and other files are only accessible to chosen roles, or cannot be hotlinked, with permissions specifically set per item.
This plugin adds the following major features to WordPress:
- Media Privacy: Lock access to items in the Media Library by preventing hotlinks only or by limiting access to files to selected user roles.
- User-friendly forbidden handler: Images set to private do not break on the frontend. Instead, they are replaced by a simple access denied SVG picture – the forbidden handler can be replaced using the filter hooks
pvtmed_forbidden_response_content(apply_filters( 'pvtmed_forbidden_response_content', $forbidden_response_content, $file );) andpvtmed_forbidden_mimetype(apply_filters( 'pvtmed_forbidden_mimetype', 'image/svg+xml' );). - Customizable for more granularity: Restricted media will be checked for autorization – plugin developers can hook into the
pvtmed_is_authorizedfilter (apply_filters( 'pvtmed_is_authorized', $authorized, $attachment_id );) to apply more complex conditions for authorization. - Optimized private media delivery: Files with access restriction are served using streams without loading the file entirely in memory before delivery, and WordPress files are loaded as lightly as possible for an optimised server memory usage.
- Fallbacks: Restricted files are kept in an alternate
wp-content/pvtmed-uploadsfolder (or equivalent ifWP_CONTENT_DIRis not the default) ; fallbacks are in place to make sure:- moving a media to private does not break previously embedded media (javascript dynamic fallback with notice on post edit screen – Classic Editor only).
- deactivating the plugin does not break previously embedded media (database update).
- deleting the plugin does not break previously embedded media (database update).
A Must Use Plugin pvtmed-endpoint-optimizer.php is installed automatically to make sure WordPress is loaded as lightly as possible when requesting restricted media items. Developers can safely edit it to enable their plugin to execute during such request if necessary.
The media privacy policy is set per media item – therefore, this plugin is not a replacement for general image hotlink prevention plugins, but is ideal for anyone looking for preventing direct links to files depending on specific conditions.
Download & install the zip archive
The plugin package installer can be downloaded from the WP2E project tab called “code”.
1 – Select the version to download if this option is available otherwise the “latest” version of the main plugin will be used.
2 – After downloading the zip archive install the plugin package installer in you local environment and activate the script from the plugin list.
3 – Under the section “Plugins” of the admin dashboard you should see a new “Dependencies & Licenses” link. Follow the instructions from this panel to finalize the installation of the missing dependencies.
- Give a name to your project
- Download the Installer Package
- Install & activate the plugin locally
- Install the suggested dependencies
Tips: Use the WP2E panel to add/suggest new dependencies to the local installation. Press F5 in the list of dependencies if the changes are not displayed right away.



