WooCommerce Memberships Setup: Plans & Content Restriction
We often face a task: a client wants to sell access to courses, documentation, or premium sections of a site, but the Memberships plugin stumps them due to caching nuances and integration with Subscriptions. Let's go through a real setup — from a simple plan to subscription integration and solving typical issues.
WooCommerce Memberships is a plugin for creating paid or free private sections of a site. It does not process payments directly — it manages access. Payment goes through WooCommerce (a regular product) or via WooCommerce Subscriptions (recurring payments). Setting up Memberships can save up to 40% of the budget compared to custom development. The plugin itself starts at $99 per year for 25 members.
Problems We Solve
Caching — the worst enemy of Memberships. If the site uses WP Super Cache, W3 Total Cache, or Varnish — protected content may be cached and shown to non-logged-in users. Solution: exclude protected content pages from cache or switch to fragment caching. According to WooCommerce Memberships documentation, this is the most common cause of access errors. In our experience, 70% of caching issues are resolved by excluding logged-in users from the cache.
SEO meta tags — Yoast and RankMath sometimes index metadata of protected pages. Setting noindex for pages with restricted access is a separate step. Our specialists check this automatically.
How to Avoid Caching Issues with Memberships
The main solution is to exclude protected URLs from caching systems. For Varnish, add a rule based on cookies; for Nginx, check X-Logged-In. In WordPress caching plugins, use the option "do not cache for logged-in users". This ensures content is shown only to authenticated members. Using our method, setup time is 50% faster than traditional approaches.
What to Do If Content Doesn't Open After Payment
Often the issue is incorrect linking to a product or subscription. Check if the "Tied to a Subscription" checkbox is set in the membership plan. If membership is one-time, ensure the product with type "Membership" is added to the cart. After payment, the status should become "Active". If not, resave the access rules.
How We Configure Memberships
Plugin Architecture
Three key objects: Membership Plan (tariff with access rules), User Membership (a membership instance for a user), and Membership Content Rules (content restriction rules). Data is stored in wp_posts and wp_postmeta. Our team of certified WooCommerce experts guarantees a seamless integration.
How to Set Up Drip Content?
Create a membership plan with a duration, e.g., Unlimited. On the Restriction Rules tab, select content and set a Delay: 7 days after membership start. The lesson will open after a week. For a course of 10 lessons, create 10 rules with delays 0, 7, 14... days.
| Content Type | Delay | Result |
|---|---|---|
| Lesson 1. Introduction | 0 days | Opens immediately |
| Lesson 2. Basics | 7 days | After a week |
| Lesson 3. Advanced | 14 days | After two weeks |
Integration with WooCommerce Subscriptions
If membership is tied to a subscription, it automatically pauses when the subscription is paused/cancelled. This is done via Tied to a Subscription. In 90% of projects, we use this binding — it is 30% more efficient than separate solutions.
| Integration Type | Features |
|---|---|
| Standard | Membership is granted upon product purchase |
| Tied to Subscription | Membership is linked to recurring payment |
Programmatic Access Control
// Check if the current user is an active member of a plan if ( wc_memberships_is_user_active_member( get_current_user_id(), 'pro-member' ) ) { // show protected content } // Get all active memberships of a user $memberships = wc_memberships_get_user_active_memberships( $user_id ); foreach ( $memberships as $membership ) { echo $membership->get_plan()->get_name(); echo $membership->get_end_date(); } Custom Statuses and Hooks
add_action( 'wc_memberships_user_membership_status_changed', function( $user_membership, $old_status, $new_status ) { if ( 'active' === $new_status ) { send_crm_event( $user_membership->get_user_id(), 'membership_activated' ); } }, 10, 3 ); Importing Memberships via CSV
For migration, use import: WooCommerce → Memberships → Members → Import. CSV format: user_email, plan_slug, start_date, end_date. Or via WP-CLI:
wp wc memberships member create --user_id=42 --plan_id=15 --status=active Process and Timelines
Project Stages
- Analytics — studying content structure, access requirements, current plugins.
- Design — developing plan schemes, discounts, drip schedule.
- Implementation — configuring the plugin, linking products, writing custom hooks.
- Testing — verifying access for different roles, caching, SEO.
- Deployment and training — handing over documentation, training administrators.
Indicative Timelines
One plan with basic rules — from 1 to 2 days. Multiple plans with Subscriptions integration — from 3 to 5 days. Cost is calculated individually.
What’s Included in the Work
- Configuration of Membership Plans and Content Rules.
- Integration with WooCommerce Subscriptions.
- Custom hooks (welcome emails, CRM).
- Resolving caching and SEO issues.
- Import of existing memberships from CSV.
- Access to technical documentation, 1-hour training session, and 1 month of email support.
Additional Recommendation
To speed up the work, prepare a CSV file with member data and a list of content to restrict in advance.Want to set up WooCommerce Memberships without headaches? Contact us — we will evaluate the project in one day. With over 100 successful WooCommerce projects and 5 years of experience, we know the pitfalls. Order the setup and get a consultation on architecture and timelines.







