How to Give Buyers a Members-Only Page
You sell a course, a template library or a private guide, and the content lives on a WordPress page. Anyone with the link can read it, and a full membership plugin is a lot of setup for one rule: people who bought X can open page Y.
To give buyers a members-only page, you link the page to the products that unlock it. Customers who bought one of those products read the page after signing in, and everyone else sees a short notice pointing to the product. Subscription products can keep access only while the subscription is active.
Stackless for WooCommerce is my all-in-one plugin for WooCommerce, and Page Access is one of its modules. It works with your existing pages and products, with no new content type.
Before You Start
- Page Access switched on under Stackless → Dashboard.
- The page with the content, and the product that sells it.
- Customer accounts at checkout. A buyer has to sign in with the account they used to buy, so guest checkout won’t unlock anything.
Lock the Page
You can link them from either side, and both write the same data:
- Open the page in the editor.
- In the Customer access box in the sidebar, tick the products that unlock it.
- Update the page.
Or open the product, go to Product data → Page access and tick the pages it unlocks. Any one ticked product is enough to open a page. So a page can belong to several products, such as a course page unlocked by both the course and the bundle.
Locked pages show a Customers only label in your Pages list, which makes it easy to check what’s gated.
Decide What Visitors See
The page’s WordPress visibility decides how a locked page behaves for everyone else:
| Page visibility | Visitors without access see |
|---|---|
| Published | The page title and an access notice instead of the content |
| Private | Signed-out visitors go to the sign-in page, and signed-in accounts without access get a not-found response |
I’d keep course and library pages Published. The title and notice act as a small sales page: someone who finds the page sees what it is and gets a button to buy the product. Private suits pages you don’t want anyone to know exist.
Customize the notice under Stackless → Settings → Page Access → Access notice. In the text for customers without access, {products} becomes the names of the products that unlock the page.
Tie Access to a Subscription
For a membership sold as a subscription, set Subscription products to Access only while the subscription is active, the default. Access then covers the trial, active billing and a cancellation that’s still inside a paid period. When the subscription ends, the page locks again.
Keep access after the first payment suits a one-time purchase sold on a payment plan, where buyers expect to keep what they paid for.
Give Buyers One Place to Find Their Pages
With My pages tab ticked, the default, My Account gets a tab listing every page the customer has unlocked. It appears once they have something to open.
The product’s Links on other sites field adds up to 20 outside links to the same list, such as a Notion template or an unlisted video. These can’t be paywalled, because anyone with the address can open them on the other site, so treat them as convenience links and replace one if it gets passed around.
Check It Works
- Open the locked page in a private browser window. You should see the title and the access notice with a buy button.
- Buy the product with a test account and sign in.
- Reload the page. The content shows, and the page appears under My pages in My Account.
What It Won’t Do
- It locks whole pages, not parts of a page. Put free and paid content on separate pages.
- It covers pages only by default. A developer can add post types with the
stackless_page_access_post_typesfilter. - It can’t lock shop, cart, checkout, My Account, terms or privacy pages, so customers can always buy and manage their account.
- Outside links aren’t protected, as explained above.
Locked pages are also kept out of search, feeds and the sitemap for people who can’t open them. Every setting is in Unlock Pages for Buyers.