Setup guide · WordPress

Setting up Demfilz Membership

This plugin turns any WordPress site into a members site - registration, accounts with avatars and photo galleries, custom fields, groups and content restriction, with Stripe-billed paid plans in Pro. Here's how to install it, build the members area and (optionally) start charging for membership.

Updated 20 July 2026~9 minWordPress 6.2+ · PHP 7.4+
1

Install

Upload the plugin zip and activate it.

2

Create pages

Five pages, one shortcode each, mapped in Settings.

3

Groups & fields

Who members are, and what you know about them.

4

Restrict content

Members-only pages, posts or sections.

What this plugin does

Demfilz Membership gives your site a complete members area: a registration form with your own custom fields and optional avatar upload, a login form, a tabbed account page where members manage their profile, avatar, photos and password, public profiles, a searchable member directory, and content restriction driven by member groups. An Import / Export screen moves members in and out by CSV and your configuration between sites as JSON.

The free plugin is complete on its own. A separate Pro add-on ($9.95/month via Stripe) adds paid membership plans billed through your own Stripe account - plans grant groups automatically, so paying members unlock your restricted content, and lapsed subscriptions downgrade automatically.

You'll need: WordPress 6.2+ and PHP 7.4+. For paid plans (Pro) you'll also need a free Stripe account.

1. Install and activate

Download the zip above, then in your WordPress admin go to Plugins → Add New → Upload Plugin, choose the file and activate. A Membership menu appears in the sidebar.

2. Create and map the member pages

Create five ordinary WordPress pages, each containing one shortcode:

  • Register - [dmem_register]
  • Login - [dmem_login]
  • My Account - [dmem_account]
  • Member Profile - [dmem_profile]
  • Members - [dmem_members]

Then open Membership → Settings and map each page in the Pages section. Every button, redirect and members-only teaser in the plugin uses these mappings, and everything falls back sensibly (to wp-login.php) when a page is not set. The Membership → Shortcodes screen repeats this quick-start with all shortcode options.

3. Add groups

Under Membership → Groups, create the groups your site needs - for example Free members and Gold. Groups are how you control access to content; they are deliberately separate from WordPress roles and never grant admin rights. Tick Show publicly on a group to display it as a badge on member profiles and the directory.

Back in Settings, choose the default groups new members join automatically. You can also assign groups per member on their user profile, or in bulk via CSV import.

4. Add member fields

Under Membership → Fields, build the fields you want to collect: text, paragraph, number, email, URL, date, dropdown, radio, checkboxes, single image or photo gallery. For each field choose:

  • Registration form - ask for it at sign-up.
  • Account page - the member can edit it later.
  • Required - must be filled in.
  • Visibility - public fields (and galleries) appear on the member's profile; private ones are only visible to the member and admins.

A photo gallery field gives every member their own gallery: they upload photos from the Photos tab of their account page (up to the per-field limit you set) and the gallery renders as a grid on their public profile. All uploads are strictly validated - images only, with a size limit you control.

5. Restrict content

Edit any page or post and find the Membership access box in the sidebar. Choose who can view it - everyone, logged-in members or selected groups - and what blocked visitors get: the members-only message (with login and register buttons) or a redirect. Site-wide default texts live under Membership → Access.

Protection is thorough: excerpts, RSS feeds, comments, comment feeds and the REST API respect the restriction, and a setting can also hide restricted posts from archives and search. To hide just part of a page, wrap it in a shortcode:

[dmem_restricted groups="gold" message="Gold members only."] ... [/dmem_restricted]

Use state="out" instead to show something only to logged-out visitors - handy for a join-us banner.

6. Tune registration

In Settings you can: use the email address as the username, collect first/last names, offer an avatar upload at sign-up, require acceptance of a terms page, and set where members land after registering and logging in. Spam protection is built in - honeypot, a minimum-time trap and a per-IP rate limit (only successful registrations count, and sites behind a proxy can supply the real IP via the dmem_client_ip filter).

Approval mode holds each new registration as pending: the member cannot log in until you approve them from Membership → Members, which shows an approval queue with one-click approve and reject. Welcome, pending, approved and rejected emails are all sent automatically and can be toggled or customised by filter.

7. Import and export

Membership → Import / Export does three jobs:

  • Import members from CSV - header row with at least an email column; optional username, first_name, last_name, password, status (active or pending), groups (keys separated by |) and any of your field keys. Tick Update existing members to update by email match. Imported users are always regular subscribers.
  • Export members to CSV - every member with profile, status, groups and field values.
  • Move your configuration - export fields, groups, access texts and settings as JSON and import them on another site; page mappings travel as page slugs and re-attach automatically.

8. Paid membership plans (Pro)

Install the separate Demfilz Membership Pro add-on alongside the free plugin, then:

  1. Activate your licence under Membership → Licence ($9.95/month - the key arrives by email after checkout).
  2. Connect Stripe under Membership → Stripe: paste your secret key (start with a test key), create the webhook endpoint shown on that screen in your Stripe dashboard, and paste its signing secret. The webhook keeps cancellations and renewals in sync; new purchases also activate when the member returns from checkout, so nobody is left waiting.
  3. Create plans under Membership → Plans: name, price (monthly or yearly, in your currency) and the groups the plan grants. The Stripe product and price are created for you.

Members subscribe from the Membership tab of their account page or a pricing page with [dmemp_plans]. Checkout and the billing portal are hosted by Stripe - card details never touch your site - and payments go straight to your Stripe account. When a subscription is cancelled or lapses, the member loses exactly the groups the plan granted; anything you assigned manually stays.

Test the whole flow first with a Stripe test key and card number 4242 4242 4242 4242, then swap in your live key.

Troubleshooting

  • A button points at wp-login.php instead of my page - map that page under Membership → Settings.
  • An existing user is missing from the directory - the directory lists members registered through the plugin; save the Membership section on their user profile to opt them in.
  • Paid membership didn't activate - check the webhook endpoint and signing secret under Membership → Stripe; on sites with plain permalinks the webhook URL uses the ?rest_route= form shown on that screen.
  • Registration says "could not be verified" - the form was submitted too fast or from a stale cached page; reload and try again, and exclude the member pages from full-page caching.

Questions? Get in touch - you'll talk directly to the developer who built the plugin.

Want a members site built for you?

We build membership sites, customer portals and custom plugins to order - scoped, quoted and delivered with code you own.