Unlock Pages for Buyers
You sell a course, a template pack or a members-only guide, and the content lives on a WordPress page. Without a gate, anyone with the URL can read it, and a membership plugin is a lot of machinery for “people who bought X can open page Y.”
Page Access links pages to products. A customer who bought one of those products can read the page after signing in. Everyone else sees an access notice that points them to the product, and subscription products can keep access only while the subscription is active.
Link a Page to a Product
You can set the link from either side. Both write the same data, so the page box and the product tab always agree.
From the page:
- Open the page in the editor.
- In the Customer access box in the sidebar, tick the products that unlock it. A filter field appears when you have more than eight products.
- Update the page.
From the product:
- Edit the product and open Product data → Page access.
- Tick the pages this product unlocks, using Filter pages by title if the list is long.
- Update the product.
Any one ticked product is enough to open the page. Leave every product unticked and the page stays open to everyone. Restricted pages show a Customers only label in your Pages list.
Shop, cart, checkout, My Account, terms and privacy policy pages can’t be restricted. They aren’t listed on the product tab, and their Customer access box says the page stays open to every customer.
Published Versus Private Pages
The page’s WordPress visibility decides how a locked page behaves:
- Published: visitors without access see the page title and the access notice instead of the content.
- Private: buyers can read it, and the “Private:” prefix is dropped from the title for them. Signed-out visitors are sent to the sign-in page. Signed-in accounts without access get WordPress’s usual not-found response.
Anyone who can edit the page, such as admins and editors, can always read it.
Who Gets In
A customer owns a product when it appears on one of their orders with a paid status (processing or completed) and the line isn’t fully refunded. Configure the rest under Stackless → Settings → Page Access:
- Subscription products: Access only while the subscription is active (trial, active, or cancelled but still inside a paid period), which is the default, or Keep access after the first payment, even when the subscription ends.
- Signed-out visitors: Show the access notice (default) or Send to the sign-in page.
- Signed-in customers without access: Show the access notice (default) or Send to the product page.
Customize the Access Notice
The Access notice section has three fields. Leave them empty to use the built-in wording:
- Heading: defaults to “This page is for customers”.
- Text for signed-out visitors: asks them to sign in with the account they used at checkout.
- Text for customers without access:
{products}becomes the names of the products that unlock the page.
The notice shows a Sign in button for guests and up to three “Get product name” buttons that link to the products.
Add Links on Other Sites
On Product data → Page access, Links on other sites holds up to 20 label and URL pairs, such as a Notion template, a shared folder or an unlisted video. Buyers find them under My pages. Rows that aren’t http:// or https:// addresses aren’t saved, and you get a warning saying how many were skipped.
These links can’t be paywalled. Anyone with the address can open them on the other site, so use unlisted links and replace a link if it gets passed around.
The My Pages Tab
With My pages tab ticked (the default), My Account gets a tab listing the customer’s unlocked pages and outside links. The tab only appears once the customer has something to open. Change its name with Tab label and its address with Tab address, which defaults to my-pages.
The [stackless_my_pages] shortcode prints the same list on any page and works even when the tab is off.
Good to Know
- Restricted pages are sent with no-cache headers and marked noindex. Pages a viewer can’t open are left out of site search, feeds and REST search, and every restricted page is left out of the WordPress sitemap.
- REST page responses drop the content and excerpt for people without access.
- Only pages are covered by default. Developers can add post types with the
stackless_page_access_post_typesfilter, and change which order statuses count as bought withstackless_page_access_paid_statuses. - The page box and product tab list up to 500 items each. Items already linked beyond that limit still show, so saving doesn’t drop them.