{"id":365070,"date":"2026-09-08T12:50:19","date_gmt":"2026-09-08T12:50:19","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/markguard-watermarks-protected-files-access-control\/"},"modified":"2026-09-08T12:49:53","modified_gmt":"2026-09-08T12:49:53","slug":"rayetun-media-protection","status":"publish","type":"plugin","link":"https:\/\/wordpress.org\/plugins\/rayetun-media-protection\/","author":23382822,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.0.0","stable_tag":"1.0.0","tested":"7.1","requires":"6.7","requires_php":"8.0","requires_plugins":null,"header_name":"RayEtun Media Protection - Watermark and File Access Control","header_author":"Md Rayhan Uddin","header_description":"Watermark images and PDFs, protect downloadable files, and control who can access them. Built on standard WordPress APIs \u2014 REST, the block editor, and @wordpress\/components.","assets_banners_color":"2c665e","last_updated":"2026-09-08 12:49:53","external_support_url":"","external_repository_url":"","donate_link":"https:\/\/wise.com\/pay\/me\/mdrayhanu2","header_plugin_uri":"https:\/\/wordpress.org\/plugins\/rayetun-media-protection\/","header_author_uri":"https:\/\/rayetun.com","rating":0,"author_block_rating":0,"active_installs":0,"downloads":35,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.0.0":{"tag":"1.0.0","author":"rayetun","date":"2026-09-08 12:49:53","revision":3686631}},"upgrade_notice":{"1.0.0":"<p>Initial release of RayEtun Media Protection.<\/p>"},"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3686631,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3686631,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256},"icon.svg":{"filename":"icon.svg","revision":3686631,"resolution":false,"location":"assets","locale":false}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3686631,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3686631,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":{"markguard\/protected-download":{"$schema":"https:\/\/schemas.wp.org\/trunk\/block.json","apiVersion":3,"name":"markguard\/protected-download","version":"1.0.0","title":"Protected Download","category":"media","icon":"download","description":"A signed, access-controlled download button for a single file. Only authorized visitors get the download link.","keywords":["download","protect","file","gated","secure"],"textdomain":"rayetun-media-protection","supports":{"html":false,"align":["wide"]},"attributes":{"fileId":{"type":"number","default":0},"attachmentId":{"type":"number","default":0},"policyId":{"type":"number","default":0},"label":{"type":"string","default":""},"lockedText":{"type":"string","default":""},"showInfo":{"type":"boolean","default":true},"accent":{"type":"string","default":"#059669"},"template":{"type":"string","default":"card"},"inited":{"type":"boolean","default":false},"name":{"type":"string","default":""},"size":{"type":"number","default":0},"mime":{"type":"string","default":""}},"editorScript":"file:.\/index.js","editorStyle":"file:.\/index.css","style":"file:.\/style-index.css"},"markguard\/protected-gallery":{"$schema":"https:\/\/schemas.wp.org\/trunk\/block.json","apiVersion":3,"name":"markguard\/protected-gallery","version":"1.0.0","title":"Protected Gallery","category":"media","icon":"format-gallery","description":"A watermark-protected image gallery: clean thumbnails, a watermarked lightbox preview, and authorized clean-file downloads.","keywords":["gallery","watermark","protect","photography","download"],"textdomain":"rayetun-media-protection","supports":{"html":false,"align":["wide","full"]},"attributes":{"items":{"type":"array","default":[]},"config":{"type":"object","default":{}}},"editorScript":"file:.\/index.js","editorStyle":"file:.\/index.css","style":"file:.\/style-index.css","viewScript":"file:.\/view.js"},"markguard\/protected-library":{"$schema":"https:\/\/schemas.wp.org\/trunk\/block.json","apiVersion":3,"name":"markguard\/protected-library","version":"1.0.0","title":"Protected File Library","category":"media","icon":"portfolio","description":"A grid of protected files with signed, access-controlled downloads and optional filtering.","keywords":["downloads","library","protect","files","resources"],"textdomain":"rayetun-media-protection","supports":{"html":false,"align":["wide","full"]},"attributes":{"items":{"type":"array","default":[]},"config":{"type":"object","default":{}},"inited":{"type":"boolean","default":false}},"editorScript":"file:.\/index.js","editorStyle":"file:.\/index.css","style":"file:.\/style-index.css","viewScript":"file:.\/view.js"}},"tagged_versions":["1.0.0"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3686631,"resolution":"1","location":"assets","locale":"","width":1700,"height":877},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3686631,"resolution":"2","location":"assets","locale":"","width":1712,"height":834},"screenshot-3.png":{"filename":"screenshot-3.png","revision":3686631,"resolution":"3","location":"assets","locale":"","width":1700,"height":840},"screenshot-4.png":{"filename":"screenshot-4.png","revision":3686631,"resolution":"4","location":"assets","locale":"","width":1700,"height":780},"screenshot-5.png":{"filename":"screenshot-5.png","revision":3686631,"resolution":"5","location":"assets","locale":"","width":1700,"height":842},"screenshot-6.png":{"filename":"screenshot-6.png","revision":3686631,"resolution":"6","location":"assets","locale":"","width":1700,"height":780},"screenshot-7.png":{"filename":"screenshot-7.png","revision":3686631,"resolution":"7","location":"assets","locale":"","width":1700,"height":780},"screenshot-8.png":{"filename":"screenshot-8.png","revision":3686631,"resolution":"8","location":"assets","locale":"","width":1700,"height":879},"screenshot-9.png":{"filename":"screenshot-9.png","revision":3686631,"resolution":"9","location":"assets","locale":"","width":1700,"height":780}},"screenshots":{"1":"Dashboard \u2014 protected files, watermarks applied, blocked attempts, and active rules at a glance.","2":"Watermark rule editor \u2014 text and image watermarks with nine-position anchoring, opacity, and rotation.","3":"Dynamic PDF watermark \u2014 insert buyer email, order number, IP, or timestamp into every downloaded PDF.","4":"Protected files list \u2014 every managed file, its rule, its serve count, and last access time.","5":"Access rule builder \u2014 combine role, expiration, hotlink, and IP rules in a single rule set.","6":"Analytics \u2014 per-file download and block activity, with hashed client fingerprints.","7":"Integrations \u2014 detected store plugins (WooCommerce, Easy Digital Downloads, Download Monitor) and the per-buyer watermark preset applied to their downloads.","8":"Settings \u2014 auto-protect uploads, deterrent layer, log retention, and theme controls.","9":"Blocks \u2014 Protected Gallery, Protected Download, and Protected File Library in the editor, with per-block defaults."}},"plugin_section":[],"plugin_tags":[18193,267963,19833,257542,3241],"plugin_category":[],"plugin_contributors":[263109],"plugin_business_model":[],"class_list":["post-365070","plugin","type-plugin","status-publish","hentry","plugin_tags-content-protection","plugin_tags-download-protection","plugin_tags-image-protection","plugin_tags-pdf-watermark","plugin_tags-watermark","plugin_contributors-rayetun","plugin_committers-rayetun"],"banners":{"banner":"https:\/\/ps.w.org\/rayetun-media-protection\/assets\/banner-772x250.png?rev=3686631","banner_2x":"https:\/\/ps.w.org\/rayetun-media-protection\/assets\/banner-1544x500.png?rev=3686631","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":"https:\/\/ps.w.org\/rayetun-media-protection\/assets\/icon.svg?rev=3686631","icon":"https:\/\/ps.w.org\/rayetun-media-protection\/assets\/icon.svg?rev=3686631","icon_2x":false,"generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/rayetun-media-protection\/assets\/screenshot-1.png?rev=3686631","caption":"Dashboard \u2014 protected files, watermarks applied, blocked attempts, and active rules at a glance."},{"src":"https:\/\/ps.w.org\/rayetun-media-protection\/assets\/screenshot-2.png?rev=3686631","caption":"Watermark rule editor \u2014 text and image watermarks with nine-position anchoring, opacity, and rotation."},{"src":"https:\/\/ps.w.org\/rayetun-media-protection\/assets\/screenshot-3.png?rev=3686631","caption":"Dynamic PDF watermark \u2014 insert buyer email, order number, IP, or timestamp into every downloaded PDF."},{"src":"https:\/\/ps.w.org\/rayetun-media-protection\/assets\/screenshot-4.png?rev=3686631","caption":"Protected files list \u2014 every managed file, its rule, its serve count, and last access time."},{"src":"https:\/\/ps.w.org\/rayetun-media-protection\/assets\/screenshot-5.png?rev=3686631","caption":"Access rule builder \u2014 combine role, expiration, hotlink, and IP rules in a single rule set."},{"src":"https:\/\/ps.w.org\/rayetun-media-protection\/assets\/screenshot-6.png?rev=3686631","caption":"Analytics \u2014 per-file download and block activity, with hashed client fingerprints."},{"src":"https:\/\/ps.w.org\/rayetun-media-protection\/assets\/screenshot-7.png?rev=3686631","caption":"Integrations \u2014 detected store plugins (WooCommerce, Easy Digital Downloads, Download Monitor) and the per-buyer watermark preset applied to their downloads."},{"src":"https:\/\/ps.w.org\/rayetun-media-protection\/assets\/screenshot-8.png?rev=3686631","caption":"Settings \u2014 auto-protect uploads, deterrent layer, log retention, and theme controls."},{"src":"https:\/\/ps.w.org\/rayetun-media-protection\/assets\/screenshot-9.png?rev=3686631","caption":"Blocks \u2014 Protected Gallery, Protected Download, and Protected File Library in the editor, with per-block defaults."}],"raw_content":"<!--section=description-->\n<p>\ud83d\udee1\ufe0f <strong>RayEtun Media Protection is a media and document security suite for WordPress.<\/strong><\/p>\n\n<p>RayEtun Media Protection combines image watermarking, PDF watermarking, encrypted file delivery, expiring download links, role-based access control, editor blocks for protected galleries and downloads, and e-commerce integrations in a single plugin. Every feature listed below is included and works out of the box.<\/p>\n\n<p>Use it to watermark product photos so they stay branded when shared, stamp PDFs with each buyer's name and order number for traceable delivery, gate downloadable files behind login or role rules, and make download links expire after a set time or click count.<\/p>\n\n<p>It is built the modern WordPress way \u2014 on the REST API, the block editor, <code>@wordpress\/components<\/code>, and standard WordPress hooks. There is no jQuery on visitor pages and no external framework runtime.<\/p>\n\n<h4>How RayEtun Media Protection is organized<\/h4>\n\n<ul>\n<li><strong>Clearly labeled<\/strong> \u2014 every feature description says what it does and what it does not do. Deterrent scripts are labeled as deterrents in the settings, next to a note that no browser-side script can prevent a determined user from copying media.<\/li>\n<li><strong>Local first<\/strong> \u2014 files, watermark rules, download logs, and settings live in your own WordPress database and file system.<\/li>\n<li><strong>Built on WordPress APIs<\/strong> \u2014 the REST API, the block editor, <code>@wordpress\/components<\/code>, and standard hooks. No jQuery on visitor pages, no framework runtime.<\/li>\n<li><strong>Accessible<\/strong> \u2014 every admin screen is designed to WCAG 2.2 Level AA: keyboard operable, screen-reader labeled, focus managed, and reduced-motion aware.<\/li>\n<\/ul>\n\n\n\n<h4>\ud83d\uddbc\ufe0f Image Watermarking<\/h4>\n\n<ul>\n<li>\ud83c\udfa8 <strong>Text or image watermarks<\/strong> applied on upload, in bulk, or on demand from the media library.<\/li>\n<li>\ud83e\udded <strong>Nine-position anchoring<\/strong> with pixel or percentage offsets \u2014 put the mark exactly where you want it.<\/li>\n<li>\ud83c\udf17 <strong>Opacity and rotation<\/strong> controls; separate settings for portrait and landscape sources.<\/li>\n<li>\ud83d\udd01 <strong>Non-destructive<\/strong> \u2014 originals are backed up before watermarking, so you can restore or re-watermark at any time.<\/li>\n<li>\ud83d\uddbc\ufe0f <strong>Preserves EXIF and IPTC metadata<\/strong> \u2014 camera data, copyright fields, and captions survive the watermark pass.<\/li>\n<li>\u26a1 <strong>Dual engines<\/strong> \u2014 Imagick when the server has it, GD as a fallback.<\/li>\n<li>\ud83d\udcd0 <strong>Small-image threshold<\/strong> \u2014 automatically skip files under a size you set (thumbnails, icons).<\/li>\n<li>\ud83c\udf10 <strong>JPEG, PNG, and WebP<\/strong> all supported.<\/li>\n<\/ul>\n\n<h4>\ud83d\udcc4 PDF Watermarking<\/h4>\n\n<ul>\n<li>\ud83d\udcdd <strong>Text or image watermarks<\/strong> on every page of any PDF you upload or serve as a download.<\/li>\n<li>\ud83e\uddd1 <strong>Dynamic per-user watermarks<\/strong> \u2014 insert the buyer's email, IP, user ID, order number, download timestamp, or the site domain into the watermark itself. This makes each downloaded copy uniquely identifiable to the person who downloaded it.<\/li>\n<li>\ud83c\udfaf <strong>Per-file rules<\/strong> \u2014 different watermark settings for different products, folders, or categories.<\/li>\n<li>\ud83d\udd10 <strong>Password protection<\/strong> \u2014 set an open-password on the watermarked PDF, generated per download or shared.<\/li>\n<\/ul>\n\n<h4>\ud83d\udd12 Protected File Storage<\/h4>\n\n<ul>\n<li>\ud83d\udeaa <strong>Files stored outside the webroot<\/strong> when the server allows it, with an <code>.htaccess<\/code> fallback that blocks direct URL access on shared hosts.<\/li>\n<li>\ud83c\udfab <strong>Signed serve URLs<\/strong> \u2014 the only way to reach a protected file is through a validated request with a signed token.<\/li>\n<li>\ud83d\udc65 <strong>Role and user gating<\/strong> \u2014 restrict a file to logged-in users, specific roles, or specific accounts.<\/li>\n<li>\u23f1\ufe0f <strong>Expiring links<\/strong> \u2014 expire by time (minutes to days) or by click count (single-use or fixed number of downloads).<\/li>\n<li>\ud83d\udeab <strong>Hotlink prevention<\/strong> \u2014 reject requests whose referrer does not belong to your site.<\/li>\n<li>\ud83e\udd16 <strong>Auto-protect on upload<\/strong> \u2014 every new file uploaded to the media library can be protected automatically by an active rule.<\/li>\n<\/ul>\n\n<h4>\ud83d\uded2 E-Commerce Integrations<\/h4>\n\n<p>Works with the three most common WordPress download-selling plugins, out of the box:<\/p>\n\n<ul>\n<li>\ud83d\uded2 <strong>WooCommerce<\/strong> \u2014 watermark and protect downloadable products; each buyer receives a PDF stamped with their name and order.<\/li>\n<li>\ud83d\udcbe <strong>Easy Digital Downloads<\/strong> \u2014 the same treatment for EDD downloads, using the customer's email and receipt.<\/li>\n<li>\ud83d\udce6 <strong>Download Monitor<\/strong> \u2014 protected serving and per-download watermarking for Download Monitor libraries.<\/li>\n<\/ul>\n\n<h4>\ud83e\uddf1 Gutenberg Blocks<\/h4>\n\n<p>Three editor blocks bring watermarking and access control straight into the block editor \u2014 no shortcodes to remember:<\/p>\n\n<ul>\n<li>\ud83d\uddbc\ufe0f <strong>Protected Gallery<\/strong> \u2014 show a photo grid with clean thumbnails. Clicking a photo opens a lightbox with the watermarked preview, and an authorized viewer downloads the clean original from a single button. Right-click is disabled on the images, and anyone who grabs the preview through a browser extension only ends up with the watermarked copy. Optional filter chips let visitors narrow the grid by tag.<\/li>\n<li>\u2b07\ufe0f <strong>Protected Download<\/strong> \u2014 a single download card for a file of any type, with a matching file icon, an access rule, and a sign-in button for logged-out visitors. Two layout templates: a horizontal row card or a centered tile.<\/li>\n<li>\ud83d\udcda <strong>Protected File Library<\/strong> \u2014 a grid of protected downloads with a live filter box, for delivering a set of files \u2014 a resource pack, a press kit, a set of lesson materials \u2014 behind one access rule.<\/li>\n<\/ul>\n\n<p>Every block includes an accent-color picker, handles any file type (images, PDFs, audio, video, archives, documents) with a fitting icon, and offers a <strong>who can download<\/strong> choice of Everyone, logged-in users, or a named access rule. You can set defaults for each block once under <strong>RayEtun Media Protection \u2192 Blocks<\/strong> and reuse them everywhere.<\/p>\n\n<h4>\ud83d\uddb1\ufe0f Deterrent Layer<\/h4>\n\n<p>An optional set of client-side deterrents you can enable per rule set. They are labeled in the settings for exactly what they are:<\/p>\n\n<ul>\n<li>\ud83d\udeab <strong>Right-click block<\/strong> \u2014 a casual deterrent. Does not prevent copying by a determined user.<\/li>\n<li>\ud83c\udfaf <strong>Drag-and-drop disable<\/strong> \u2014 a casual deterrent that prevents accidental image drags.<\/li>\n<li>\ud83d\udd27 <strong>DevTools open detection<\/strong> \u2014 a cosmetic deterrent that will not stop anyone who disables JavaScript.<\/li>\n<\/ul>\n\n<p>Deterrents are off by default and can be enabled per rule set.<\/p>\n\n<h4>\ud83d\udcca Analytics<\/h4>\n\n<ul>\n<li>\ud83d\udcc9 <strong>Download attempts and blocks<\/strong> \u2014 see which files are requested most often, and which access rules fire.<\/li>\n<li>\ud83d\udd25 <strong>Attempt heatmap<\/strong> \u2014 spot unusual bursts of traffic on a single file.<\/li>\n<li>\ud83d\udd0d <strong>Per-file activity<\/strong> \u2014 every access decision is logged with the event, timestamp, and a hashed client fingerprint.<\/li>\n<li>\ud83d\udd10 <strong>Privacy-respecting<\/strong> \u2014 IPs and user-agent strings are stored as salted hashes, never in the clear. Log entries older than 90 days are pruned automatically; the retention window is configurable.<\/li>\n<\/ul>\n\n<h4>\ud83c\udf10 Multisite<\/h4>\n\n<p>Full network compatibility. Enable per site, or activate network-wide and manage from the network admin.<\/p>\n\n\n\n<h4>\ud83e\udded What RayEtun Media Protection Will Not Do<\/h4>\n\n<p>Worth stating plainly, so you know what to expect:<\/p>\n\n<ul>\n<li>\u274c <strong>No \"unbreakable\" claims<\/strong> \u2014 no browser-side plugin can prevent a determined user from copying media. RayEtun Media Protection prevents casual copying, direct-URL access, unauthorized downloads, and unmarked resharing. The settings page states this alongside the deterrent controls.<\/li>\n<li>\u274c <strong>No overlay<\/strong> \u2014 RayEtun Media Protection changes markup and file bytes, not visitor UI.<\/li>\n<li>\u274c <strong>No data collection<\/strong> \u2014 no telemetry, no phone-home, no account. Everything is stored in your own WordPress database and file system.<\/li>\n<li>\u274c <strong>No breaking auto-updates<\/strong> \u2014 database schema migrations are versioned and idempotent.<\/li>\n<\/ul>\n\n\n\n<h4>Compatible With<\/h4>\n\n<ul>\n<li>WooCommerce, Easy Digital Downloads, Download Monitor (built-in integrations)<\/li>\n<li>Block themes and classic themes<\/li>\n<li>Multisite networks<\/li>\n<li>Any hosting environment supporting the plugin minimums (PHP 8.0 or later, WordPress 6.7 or later); Imagick used when present, GD as a fallback<\/li>\n<\/ul>\n\n<h3>External Services<\/h3>\n\n<p>RayEtun Media Protection sends no data anywhere.<\/p>\n\n<p>There is no telemetry, no analytics phone-home, no account, and no license check. Watermarking, file storage, access rules, and download logs are stored only in your own WordPress database and file system. There are no third-party API calls, no CDNs contacted, and no external fonts or assets loaded on your visitors' pages.<\/p>\n\n<h3>Development<\/h3>\n\n<p>RayEtun Media Protection is open source and built with the official <a href=\"https:\/\/www.npmjs.com\/package\/@wordpress\/scripts\">@wordpress\/scripts<\/a> toolchain (webpack). The complete, un-minified source \u2014 every module and admin screen \u2014 ships in the plugin's <code>src\/<\/code> and <code>src-ui\/<\/code> directories; the files in <code>build\/<\/code> are compiled from them. Nothing is obfuscated.<\/p>\n\n<p>To build from source:<\/p>\n\n<pre><code>composer install --no-dev &amp;&amp; npm install &amp;&amp; npm run build\n<\/code><\/pre>\n\n<p>That regenerates everything in <code>build\/<\/code>. <code>npm test<\/code> runs the unit suite, and <code>composer test<\/code> runs the PHP tests. No build step is needed to <em>use<\/em> the plugin \u2014 the compiled output is included.<\/p>\n\n<p>Bug reports are welcome in the <a href=\"https:\/\/wordpress.org\/support\/plugin\/rayetun-media-protection\/\">support forum<\/a>.<\/p>\n\n<h3>Credits<\/h3>\n\n<p>RayEtun Media Protection bundles the following open-source libraries; their copyright and license notices are preserved in <code>vendor\/<\/code>:<\/p>\n\n<ul>\n<li><a href=\"https:\/\/tcpdf.org\/\">TCPDF<\/a> by Nicola Asuni \u2014 LGPL-3.0-or-later \u2014 used for PDF watermarking output.<\/li>\n<li><a href=\"https:\/\/www.setasign.com\/fpdi\">FPDI<\/a> by Setasign GmbH &amp; Co. KG (free version) \u2014 MIT \u2014 used for reading existing PDFs before watermarking.<\/li>\n<\/ul>\n\n<p>Everything else is original work under GPL-2.0-or-later.<\/p>\n\n<!--section=installation-->\n<h4>From your dashboard<\/h4>\n\n<ol>\n<li>Go to <strong>Plugins \u2192 Add New<\/strong> and search for <strong>RayEtun Media Protection<\/strong>.<\/li>\n<li>Click <strong>Install Now<\/strong>, then <strong>Activate<\/strong>.<\/li>\n<\/ol>\n\n<h4>Manual upload<\/h4>\n\n<ol>\n<li>Download the plugin ZIP file.<\/li>\n<li>Go to <strong>Plugins \u2192 Add New \u2192 Upload Plugin<\/strong>, choose the ZIP, and click <strong>Install Now<\/strong>.<\/li>\n<li>Activate the plugin.<\/li>\n<\/ol>\n\n<h4>First steps after activation<\/h4>\n\n<ol>\n<li>Visit the <strong>RayEtun Media Protection<\/strong> menu in wp-admin. The Dashboard walks you through creating your first watermark rule.<\/li>\n<li>To protect a specific file, open <strong>Media Library<\/strong>, select any attachment, and use <strong>Protect with RayEtun Media Protection<\/strong> in the row actions.<\/li>\n<li>To protect all new uploads automatically, turn on <strong>Auto-protect<\/strong> in <strong>RayEtun Media Protection \u2192 Settings<\/strong>.<\/li>\n<li>If you sell downloads through WooCommerce, Easy Digital Downloads, or Download Monitor, the corresponding integration activates as soon as RayEtun Media Protection sees that plugin is active.<\/li>\n<\/ol>\n\n<p>A sensible default rule is created on activation, so no configuration is required to try the plugin.<\/p>\n\n<!--section=faq-->\n<dl>\n<dt id=\"%F0%9F%9B%A1%EF%B8%8F%20does%20rayetun%20media%20protection%20prevent%20people%20from%20stealing%20my%20images%20or%20pdfs%3F\"><h3>\ud83d\udee1\ufe0f Does RayEtun Media Protection prevent people from stealing my images or PDFs?<\/h3><\/dt>\n<dd><p>It prevents casual copying and direct-URL access, and it makes shared copies traceable. No browser-side plugin can prevent a determined user from screenshotting an image or extracting text from a PDF. What RayEtun Media Protection does that matters for most sites: it blocks right-clicks on your product photos, keeps protected PDFs off Google's index, makes every PDF a buyer downloads uniquely identifiable to that buyer, and lets you set download links to expire after a time window or click count.<\/p><\/dd>\n<dt id=\"%F0%9F%96%BC%EF%B8%8F%20does%20watermarking%20degrade%20my%20images%3F\"><h3>\ud83d\uddbc\ufe0f Does watermarking degrade my images?<\/h3><\/dt>\n<dd><p>No. Originals are backed up before watermarking, so you can restore or re-watermark at any time. Watermarks are applied to the visible copies; the backup stays untouched.<\/p><\/dd>\n<dt id=\"%F0%9F%93%84%20what%20pdf%20library%20does%20rayetun%20media%20protection%20use%3F\"><h3>\ud83d\udcc4 What PDF library does RayEtun Media Protection use?<\/h3><\/dt>\n<dd><p>TCPDF for rendering, and FPDI (free version) for reading existing PDFs before watermarking. Both are open source and GPL-compatible; their license notices are preserved in <code>vendor\/<\/code>.<\/p><\/dd>\n<dt id=\"%F0%9F%8E%A8%20can%20i%20put%20a%20different%20watermark%20on%20different%20files%3F\"><h3>\ud83c\udfa8 Can I put a different watermark on different files?<\/h3><\/dt>\n<dd><p>Yes. Create multiple rule sets under <strong>RayEtun Media Protection \u2192 Watermarks<\/strong>, then assign them per file, per product (for WooCommerce and EDD), or as the default for all new uploads.<\/p><\/dd>\n<dt id=\"%F0%9F%8C%90%20which%20e-commerce%20plugins%20does%20rayetun%20media%20protection%20integrate%20with%3F\"><h3>\ud83c\udf10 Which e-commerce plugins does RayEtun Media Protection integrate with?<\/h3><\/dt>\n<dd><p>WooCommerce, Easy Digital Downloads, and Download Monitor are supported out of the box. The integration activates automatically when RayEtun Media Protection detects the other plugin is installed and active.<\/p><\/dd>\n<dt id=\"%F0%9F%94%90%20where%20are%20protected%20files%20stored%3F\"><h3>\ud83d\udd10 Where are protected files stored?<\/h3><\/dt>\n<dd><p>Outside the webroot where the server allows it, otherwise inside a protected folder within <code>wp-content\/uploads\/<\/code> with a strict <code>.htaccess<\/code> rule that blocks direct URL access. Either way, the only route to a protected file is through RayEtun Media Protection's serve handler, which validates access on every request.<\/p><\/dd>\n<dt id=\"%F0%9F%A7%B1%20how%20do%20the%20protected%20gallery%20and%20download%20blocks%20work%3F\"><h3>\ud83e\uddf1 How do the Protected Gallery and download blocks work?<\/h3><\/dt>\n<dd><p>Add any of the three blocks \u2014 Protected Gallery, Protected Download, or Protected File Library \u2014 from the block inserter. The gallery shows clean thumbnails, opens a watermarked preview in a lightbox, and lets an authorized viewer download the clean original; the two download blocks present a file (or a filterable set of files) behind an access rule, with a sign-in button for logged-out visitors. Each block has an accent-color picker and a <strong>who can download<\/strong> setting (Everyone, logged-in users, or a named access rule). Set per-block defaults once under <strong>RayEtun Media Protection \u2192 Blocks<\/strong>.<\/p><\/dd>\n<dt id=\"%F0%9F%9A%AB%20will%20right-click%20block%20work%20on%20mobile%3F\"><h3>\ud83d\udeab Will right-click block work on mobile?<\/h3><\/dt>\n<dd><p>It disables the mobile long-press context menu on browsers that support that hook, but mobile devices vary. Treat it as a casual deterrent on any platform. The reliable protection is the file-serving layer, not the JavaScript overlay.<\/p><\/dd>\n<dt id=\"%F0%9F%94%92%20does%20rayetun%20media%20protection%20send%20my%20data%20anywhere%3F\"><h3>\ud83d\udd12 Does RayEtun Media Protection send my data anywhere?<\/h3><\/dt>\n<dd><p>No. There is no telemetry, no phone-home, no account, and no license check. Downloads, logs, and settings are stored only in your own WordPress database. See the External Services section \u2014 it is empty.<\/p><\/dd>\n<dt id=\"%F0%9F%A7%A9%20does%20it%20conflict%20with%20other%20content-protection%20plugins%3F\"><h3>\ud83e\udde9 Does it conflict with other content-protection plugins?<\/h3><\/dt>\n<dd><p>Running two watermarking or right-click plugins on the same file is not supported; disable one before activating the other. File-protection plugins can coexist for files RayEtun Media Protection is not managing.<\/p><\/dd>\n<dt id=\"%E2%99%BF%20is%20rayetun%20media%20protection%20accessible%3F\"><h3>\u267f Is RayEtun Media Protection accessible?<\/h3><\/dt>\n<dd><p>Yes. Every admin screen is designed to WCAG 2.2 Level AA \u2014 keyboard operable, focus managed, screen-reader labeled, and reduced-motion aware. The color palette meets the contrast requirements in both light and dark themes.<\/p><\/dd>\n<dt id=\"%E2%99%BB%EF%B8%8F%20what%20happens%20if%20i%20uninstall%20rayetun%20media%20protection%3F\"><h3>\u267b\ufe0f What happens if I uninstall RayEtun Media Protection?<\/h3><\/dt>\n<dd><p>Everything is removed cleanly: the three RayEtun Media Protection database tables, all plugin options, custom capabilities, scheduled cron events, and the protected-uploads directory. Your original media, posts, and pages are never touched.<\/p><\/dd>\n<dt id=\"%F0%9F%92%AC%20get%20support\"><h3>\ud83d\udcac Get Support<\/h3><\/dt>\n<dd><p>Post in the <a href=\"https:\/\/wordpress.org\/support\/plugin\/rayetun-media-protection\/\">WordPress.org support forum<\/a>.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>Initial release of RayEtun Media Protection.<\/li>\n<li>Image watermarking \u2014 text or image marks, nine-position anchoring, opacity and rotation, non-destructive with EXIF and IPTC preservation, dual Imagick and GD engines, small-image threshold.<\/li>\n<li>PDF watermarking \u2014 text or image marks on every page, dynamic tokens (<code>{user_email}<\/code>, <code>{user_ip}<\/code>, <code>{user_id}<\/code>, <code>{order_id}<\/code>, <code>{date}<\/code>, <code>{site}<\/code>, <code>{download_id}<\/code>), per-file rules, optional password protection.<\/li>\n<li>Protected file storage \u2014 files stored outside the webroot where possible with an <code>.htaccess<\/code> fallback; signed-token serve handler; role, user, expiration, click-count, and hotlink access rules.<\/li>\n<li>Auto-protect on upload \u2014 every new media library upload can be protected automatically by an active rule.<\/li>\n<li>WooCommerce, Easy Digital Downloads, and Download Monitor integrations \u2014 protected serving and per-buyer PDF watermarking, built in.<\/li>\n<li>Gutenberg blocks \u2014 Protected Gallery (clean thumbnails, watermarked lightbox preview, authorized clean download, right-click disabled, tag filter), Protected Download, and Protected File Library; accent-color picker, any file type with a matching icon, per-block defaults under RayEtun Media Protection \u2192 Blocks.<\/li>\n<li>Deterrent layer \u2014 right-click, drag-and-drop, and devtools deterrents, labeled as deterrents in the settings.<\/li>\n<li>Analytics \u2014 download attempt log with hashed client fingerprints, per-file activity view, automatic 90-day pruning (configurable).<\/li>\n<li>Multisite \u2014 full network compatibility, per-site or network-wide activation.<\/li>\n<li>Admin UI \u2014 sidebar navigation, light and dark themes, WCAG 2.2 Level AA throughout, no jQuery, built on <code>@wordpress\/components<\/code>.<\/li>\n<li>Clean uninstall \u2014 all tables, options, capabilities, cron events, and the protected-uploads directory removed on delete.<\/li>\n<\/ul>","raw_excerpt":"Watermark images and PDFs, protect downloadable files, and control who can access them \u2014 in one plugin, on standard WordPress APIs.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/365070","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=365070"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/rayetun"}],"wp:attachment":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=365070"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=365070"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=365070"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=365070"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=365070"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=365070"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}