Members-only downloads on WordPress with Shopify

A members-only post stops the text, but a PDF linked from it usually has a public address that anyone can share. RedeemID’s protected files close that gap. Each download checks the visitor’s access against the same Shopify tags that open the post, so a copied link is no use to someone who isn’t entitled.

Where the file should live

Two kinds of file sit well in different places:

  • A file someone buys once, such as an ebook or a sample pack, can be sold and delivered by a Shopify digital downloads app, which emails the buyer a link.
  • A file that comes with a membership or a course, such as worksheets, recordings or a back-issue archive, belongs on WordPress beside the posts it goes with. That is what this guide covers.

1. Choose who can download it

Open the file in the media library and set Who can download:

  • Whoever can read the item it’s attached to: the post’s own rule decides, including drip and time windows. Use it for files that belong to one post or lesson.
  • Members holding a level: for example Members holding Gold, for a library every Gold member can use.
  • Members with a feature: for example a downloads feature granted by an add-on tag, when downloads are sold separately from reading.

Anything but Everyone moves the file into a protected folder, and every link WordPress builds for it then goes through the check. See Protecting a file.

2. Close the folder on the web server

The check only holds if the web server refuses to serve the folder directly. On Apache and LiteSpeed RedeemID does this for you. On nginx, one rule goes in the site’s configuration, or your host’s support can add it. Tools → Site Health reports a critical issue while the folder is open. See Close the folder on your web server.

What a visitor gets

  • A member with access gets the file. PDFs, images, audio and video open in the browser, and everything else downloads. The response is never cached.
  • A signed-out visitor is asked to sign in, with a link back to the post.
  • A signed-in visitor without access is told their membership doesn’t include the file, with a link to the post, where the wall explains how to get it.

Links saved before a file was protected still work for members: RedeemID redirects them to the checked address. Every download and refusal is recorded on RedeemID → App events.

Limits

  • Keep protected files on the server. Plugins that move uploads to a CDN or object storage bypass the protected folder.
  • Long videos: seeking far into a file waits for the download unless the web server streams it. Turn on the server transfer with the redeemid_file_sendfile filter.
  • Image sizes: old direct links redirect for the original file only, not for an image’s other sizes.
  • Uninstalling leaves protected files closed. Set each back to Everyone first if they should be public.

Written for: Course creators, Creators

RedeemID is still being built

RedeemID is a WordPress plugin that lets customers sign in with their Shopify account and opens your site to what that account holds. It is in early development, so parts of this site are unfinished and details will change.

It is coming soon. We are looking for sponsors on GitHub and for the first stores and publishers to use it.

For more information, email vinny@vinnysgreen.com.

Get in touch