Constellation restricts posts, pages, other content types, and whole categories or tags to members of one or more plans. Non-members get a message, an excerpt, a redirect or a 404 instead, depending on your settings. You can restrict content from a plan, from the post editor as you write, or a section at a time inside a page with blocks or shortcodes.
When you’d use this
- Put articles, guides or videos behind a paywall.
- Make a members-only area of your site.
- Drip a course: open each lesson a week after the last.
- Show a "join now" section to non-members and a welcome note to members on the same page.
- Keep members-only files and videos from being shared.
How to use it
1. Restrict content from a plan
To restrict lots of content at once (all posts, a category, a section of pages), add rules on the plan’s Restrict Content tab. Create membership plans in Constellation walks through the fields.
2. Restrict a post or page as you write it
In the block editor, click the Constellation icon in the top toolbar to open its sidebar. In the classic editor, use the Constellation box below the content.

Click Manage rules to add a rule for this item: pick the Plan, and set Accessible to immediately or specify a time after the member’s start date. Click Save changes. The rule also appears on the plan’s Restrict Content tab.
3. Keep one item public
To keep a post public when a broader rule covers it (for example, a free sample in a members-only category), open Manage rules and turn on Disable restrictions. It stays public whatever current or future rules say.
4. Check it as a visitor
Open the item in a private browser window to see what non-members get, then log in as a member to check it opens.
What non-members see
The Content restriction mode in Constellation settings decides:
- Hide content only: the post still appears in your blog and archives, but its content and comments are replaced by a restriction message, with an excerpt first if Show excerpts is on. The message invites visitors to buy a product that grants access, or says a membership is required when no product does.
- Redirect to page: non-members are sent to your Redirect page. Search engines still see the excerpt.
- Hide completely: the content disappears for non-members, from archives and search engines too, and its URL shows a 404 page.
Members whose dripped access hasn’t started yet see the "delayed" message instead.
Child pages don’t follow their parent’s restriction unless Inherit parent restrictions is on.
Custom messages for one post or page
Click Manage messages in the Constellation sidebar (or box) to replace the store-wide restriction messages for this item. The defaults are under Constellation » Configuration » Settings » Messages; see Constellation settings.
Restrict part of a page
Member Content and Non-Member Content blocks
In the block editor, add the Member Content block and put members-only blocks inside it. Its settings:
- Plans: which plans see it. Leave it blank for members of any plan.
- Delay access: Immediately, After being a member for a specific time, or After a specific date.
- Hide block from members during free trial: for recurring billing plans with a trial.
- Restricted content message: No message, Default restriction message or Custom restriction message for visitors who can’t see the block.
The Non-Member Content block does the opposite: only visitors without a membership see what’s inside, such as a "join now" call to action.

Shortcodes
For the classic editor or page builders:
[kc_restrict plans="gold,silver" delay="2 weeks" start_after_trial="no"]…[/kc_restrict]: members only.planstakes plan slugs or IDs; leave it out for any plan.delaytakes a period (such as5 daysor1 month) or a date.[kc_nonmember plans="gold"]…[/kc_nonmember]: everyone except members of those plans (or of any plan, withoutplans).[kc_content_restricted]: the restriction message for the content the visitor tried to open. Put it on your Redirect page.[kc_discounted_product id="123"]…[/kc_discounted_product]: shows its content only when the product has a member discount. Leave outidon the product’s own page; addplansto check one plan.[kc_product_discount id="123" format="percentage"]: shows the product’s member discount, as an amount (the default) or a percentage, the highest by default (display="min"or"average"for others).
Protect videos and files
Constellation controls who can open a page. To stop the files on it being shared, also lock them down where they’re stored.
Videos on Vimeo or YouTube
- Restrict the page or post that embeds the video.
- In your video host’s privacy settings, limit where the video can be embedded to your own domain, if your host offers it (Vimeo does).
- Turn off downloads and public video pages at the host.
With domain-limited embedding, the video only plays on your site, so a copied embed link doesn’t work elsewhere. Our blog has a longer guide to restricting video content in WooCommerce.
Downloadable files such as PDFs
- Create a WooCommerce product, enable Downloadable, and upload the file under Downloadable files.
- Restrict the product to members: on the plan’s Restrict Products tab, or in the product’s Constellation box (Restrict and discount products with Constellation). Use purchase so only members can buy it, or view to hide it from everyone else.
WooCommerce then delivers the file through its own download links, and only to customers who bought it. For large files, Amazon S3 Storage for WooCommerce serves them from Amazon S3.
Common issues
Members-only content is visible to everyone, or members are locked out
Page caching serves the same copy to every visitor. Exclude members-only pages from your caching plugin or host’s cache, or turn caching off for logged-in users. See Troubleshoot Constellation.
A post is still public after adding a rule
Check that Disable restrictions isn’t on for it, and that you clicked Save changes in the rules window.
The redirect page is empty
Add the [kc_content_restricted] shortcode to it.
Dripped content opens on the wrong day
Delays count from the member’s start date in your site’s timezone. Set a city under Settings » General » Timezone rather than a UTC offset.
