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.
Upload the plugin zip and activate it.
Five pages, one shortcode each, mapped in Settings.
Who members are, and what you know about them.
Members-only pages, posts or sections.
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.
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.
Create five ordinary WordPress pages, each containing one shortcode:
[dmem_register][dmem_login][dmem_account][dmem_profile][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.
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.
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:
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.
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.
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.
Membership → Import / Export does three jobs:
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.Install the separate Demfilz Membership Pro add-on alongside the free plugin, then:
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.
Questions? Get in touch - you'll talk directly to the developer who built the plugin.
We build membership sites, customer portals and custom plugins to order - scoped, quoted and delivered with code you own.