{"id":241723,"date":"2026-06-04T05:55:14","date_gmt":"2026-06-04T05:55:14","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/meta-membership\/"},"modified":"2026-06-05T00:02:38","modified_gmt":"2026-06-05T00:02:38","slug":"meta-membership","status":"publish","type":"plugin","link":"https:\/\/arq.wordpress.org\/plugins\/meta-membership\/","author":16091062,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.0.0","stable_tag":"1.0.0","tested":"7.0","requires":"6.2","requires_php":"7.4","requires_plugins":null,"header_name":"Meta Membership","header_author":"Webworkz","header_description":"A clean, modern, flexible, membership plugin","assets_banners_color":"b6cddd","last_updated":"2026-06-05 00:02:38","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/plugins.webworkz.nz\/meta-membership","header_author_uri":"https:\/\/webworkz.nz","rating":0,"author_block_rating":0,"active_installs":0,"downloads":71,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.0.0":{"tag":"1.0.0","author":"jerrystewart99","date":"2026-06-05 00:02:38"}},"upgrade_notice":{"1.0.0":"<p>Initial release. Migrating from a custom membership setup? Back up your site before enabling.<\/p>"},"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3560301,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3560301,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3560301,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.0.0"],"block_files":[],"assets_screenshots":[],"screenshots":{"1":"Membership type editor showing renewal mode, fixed expiry date, grace period, and fee settings","2":"Registration settings \u2014 admin approval, email validation, and payment gateway options","3":"Member Meta Fields \u2014 custom fields with type, privacy, and editability controls","4":"General settings \u2014 system-wide defaults for registration and membership behaviour","5":"Member import tool with CSV format guide","6":"Membership notifications \u2014 time-based expiry reminders configurable per membership type"}},"plugin_section":[],"plugin_tags":[1912,1932,15130,4079,5134],"plugin_category":[41,58],"plugin_contributors":[184797],"plugin_business_model":[],"class_list":["post-241723","plugin","type-plugin","status-publish","hentry","plugin_tags-access-control","plugin_tags-membership","plugin_tags-nonprofit","plugin_tags-subscriptions","plugin_tags-user-registration","plugin_category-communication","plugin_category-user-management","plugin_contributors-jerrystewart99","plugin_committers-jerrystewart99"],"banners":[],"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/meta-membership\/assets\/icon-128x128.png?rev=3560301","icon_2x":"https:\/\/ps.w.org\/meta-membership\/assets\/icon-256x256.png?rev=3560301","generated":false},"screenshots":[],"raw_content":"<!--section=description-->\n<p><strong>Meta Membership<\/strong> is a clean, flexible, developer-friendly plugin for membership sites. Most membership plugins treat payments as the source of truth. Meta Membership is built around the membership cycle \u2014 so renewals, grace periods, and fixed annual expiry dates work the way your organisation actually expects.<\/p>\n\n<p>Designed with clubs, nonprofits, professional associations, and community groups in mind.<\/p>\n\n<p>It includes:<\/p>\n\n<ul>\n<li>Stripe-based payments and renewals (via <a href=\"https:\/\/wordpress.org\/plugins\/minimal-stripe-wrapper\/\">Minimal Stripe Wrapper<\/a>)<\/li>\n<li>Three renewal modes: fixed expiry date, anniversary, or never expires<\/li>\n<li>Fixed expiry with pro-rata fees for mid-year joiners<\/li>\n<li>Configurable grace periods \u2014 members retain access while they renew<\/li>\n<li>Registration policies: open, admin approval, or admin-only<\/li>\n<li>Page, post, and menu access control by membership status<\/li>\n<li>Built-in notifications for expiry reminders and admin alerts<\/li>\n<li>CSV import and export \u2014 migrate in from another plugin without losing your data<\/li>\n<li>Native MailPoet integration (via free Meta MailPoet add-on)<\/li>\n<\/ul>\n\n<p>Whether you need a simple signup flow or granular control over membership logic, Meta Membership is built to adapt \u2014 without the bloat.<\/p>\n\n<p>For documentation and add-ons, visit <a href=\"https:\/\/plugins.webworkz.nz\">plugins.webworkz.nz<\/a><\/p>\n\n<h3>Ideal For<\/h3>\n\n<ul>\n<li>Not-for-profit organisations<\/li>\n<li>Professional and hobby clubs<\/li>\n<li>Community and advocacy groups<\/li>\n<li>Event-based member programmes<\/li>\n<li>Developers building custom member workflows<\/li>\n<\/ul>\n\n<h3>Features<\/h3>\n\n<ul>\n<li>Membership cycle as source of truth \u2014 status driven by cycle, not payment history<\/li>\n<li>Three renewal modes: fixed expiry date, anniversary, or never expires<\/li>\n<li>Fixed expiry date support \u2014 e.g. all memberships expire 1 April each year<\/li>\n<li>Pro-rata fees for members joining mid-period on fixed expiry memberships<\/li>\n<li>Configurable grace periods \u2014 expired members retain access while they renew<\/li>\n<li>Multiple membership types with separate fees, renewal rules, and registration policies<\/li>\n<li>Separate registration fee and renewal fee per membership type<\/li>\n<li>Stripe-integrated membership payments (via Minimal Stripe Wrapper)<\/li>\n<li>Manual payment option for members who pay offline<\/li>\n<li>Registration policies: open, admin approval, or admin-only<\/li>\n<li>Email validation option on registration<\/li>\n<li>Page, post, and menu visibility control by membership status<\/li>\n<li>Custom member fields (meta fields) with privacy and editability controls<\/li>\n<li>Two notification systems \u2014 event-triggered system notifications and configurable time-based membership reminders<\/li>\n<li>CSV member import \u2014 migrate from your existing system with membership type, expiry, status, and custom fields<\/li>\n<li>CSV member export<\/li>\n<li>WordPress role sync \u2014 optionally map membership types and statuses to WP roles for compatibility with other plugins<\/li>\n<li>Developer-friendly: modern architecture with PSR-4 autoloading and clean namespacing under MIME<\/li>\n<li>Built with not-for-profit governance workflows in mind<\/li>\n<\/ul>\n\n<h3>Notes for Developers<\/h3>\n\n<p>This plugin is built with a modern architecture using PSR-4 autoloading, namespacing under <code>MIME<\/code>, and follows WordPress best practices for escaping, sanitizing, and hooking. Documentation at https:\/\/plugins.webworkz.nz<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Upload the plugin folder to <code>\/wp-content\/plugins\/meta-membership\/<\/code><\/li>\n<li>Activate the plugin through the 'Plugins' menu in WordPress<\/li>\n<li>Create a page and add the <code>[mime_dashboard]<\/code> shortcode \u2014 Meta Membership will detect it automatically<\/li>\n<li>Go to <strong>Meta Membership Settings<\/strong> to configure defaults (General, Payments, Notifications, Member Meta Fields)<\/li>\n<li>Create one or more Membership Types under <strong>Membership &gt; Membership Types<\/strong><\/li>\n<li>Add the <code>[mime_registration type=\"mt-slug\"]<\/code> shortcode to any page to enable a public registration form \u2014 replace mt-slug with your membership type slug (available via copy-to-clipboard in the Membership Types table)<\/li>\n<li>Enable payment gateways in the Payments tab<\/li>\n<\/ol>\n\n<p>Note: Stripe payments require <a href=\"https:\/\/wordpress.org\/plugins\/minimal-stripe-wrapper\/\">Minimal Stripe Wrapper<\/a> to be installed and configured separately.<\/p>\n\n<!--section=faq-->\n<dl>\n<dt id=\"is%20this%20plugin%20suitable%20for%20commercial%20use%3F\"><h3>Is this plugin suitable for commercial use?<\/h3><\/dt>\n<dd><p>Yes, absolutely. While it's designed with clubs and not-for-profits in mind, it's flexible enough for commercial sites as well.<\/p><\/dd>\n<dt id=\"how%20is%20this%20different%20from%20other%20membership%20plugins%3F\"><h3>How is this different from other membership plugins?<\/h3><\/dt>\n<dd><p>Most membership plugins determine membership status from payment records. Meta Membership uses the membership cycle as the source of truth \u2014 so grace periods, fixed expiry dates, and renewal behaviour work the way your organisation expects, regardless of payment history.<\/p><\/dd>\n<dt id=\"does%20this%20plugin%20handle%20fixed%20annual%20expiry%20dates%3F\"><h3>Does this plugin handle fixed annual expiry dates?<\/h3><\/dt>\n<dd><p>Yes. You can set a fixed expiry date (e.g. 1 April) that applies to all memberships of a given type, with configurable grace periods and optional pro-rata fees for members joining mid-year.<\/p><\/dd>\n<dt id=\"does%20this%20plugin%20support%20recurring%20payments%3F\"><h3>Does this plugin support recurring payments?<\/h3><\/dt>\n<dd><p>Not yet. Stripe-based recurring payments \u2014 where a card is charged automatically without member action \u2014 are on the roadmap. Meta Membership handles one-off payments for registration and renewal, supported by automated expiry notifications and grace periods that guide members through the renewal process at the right time.<\/p><\/dd>\n<dt id=\"can%20i%20migrate%20my%20existing%20members%20from%20another%20plugin%3F\"><h3>Can I migrate my existing members from another plugin?<\/h3><\/dt>\n<dd><p>Yes. Meta Membership includes a CSV import tool that handles member records, membership types, expiry dates, registration status, renewal intent, and custom member fields.<\/p><\/dd>\n<dt id=\"can%20i%20extend%20or%20customise%20the%20member%20fields%3F\"><h3>Can I extend or customise the member fields?<\/h3><\/dt>\n<dd><p>Yes. Member profiles are stored in a dedicated database table, and custom fields can be defined with privacy controls, editability settings, and required flags. The plugin is extensible via actions and filters.<\/p><\/dd>\n<dt id=\"will%20my%20members%20need%20to%20reset%20their%20passwords%20after%20migrating%20to%20meta%20membership%3F\"><h3>Will my members need to reset their passwords after migrating to Meta Membership?<\/h3><\/dt>\n<dd><p>No. Meta Membership is designed to work with existing WordPress user accounts. During member import, if an email address matches an existing WordPress user, that account is preserved and linked to the new membership record. Members can log in with their existing credentials immediately after migration \u2014 no password reset required.<\/p><\/dd>\n<dt id=\"does%20this%20work%20with%20mailpoet%3F\"><h3>Does this work with MailPoet?<\/h3><\/dt>\n<dd><p>Yes, via the free Meta MailPoet add-on, which syncs membership status and type to MailPoet lists automatically. No paid MailPoet tier required.<\/p><\/dd>\n<dt id=\"does%20this%20work%20with%20ultimate%20member%3F\"><h3>Does this work with Ultimate Member?<\/h3><\/dt>\n<dd><p>Meta Membership can coexist with Ultimate Member. A common setup is to use Ultimate Member for its member profile UX and directory features, while Meta Membership handles membership logic \u2014 with Ultimate Member's own membership features disabled to avoid conflict. Role Sync Rules can be used to keep WP roles aligned with membership status for compatibility.<\/p><\/dd>\n<dt id=\"is%20this%20plugin%20multisite-compatible%3F\"><h3>Is this plugin multisite-compatible?<\/h3><\/dt>\n<dd><p>Not yet tested with multisite. It should work on a per-site basis, but has not been formally validated in a network setup.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>Initial public release<\/li>\n<li>Membership cycle architecture with renewal tracking<\/li>\n<li>Three renewal modes: fixed expiry, anniversary, never expires<\/li>\n<li>Pro-rata fee support for fixed expiry memberships<\/li>\n<li>Configurable grace periods<\/li>\n<li>Stripe Checkout integration via Minimal Stripe Wrapper<\/li>\n<li>Manual payment option<\/li>\n<li>Event-triggered system notifications and configurable time-based membership reminders<\/li>\n<li>Page, post, and menu visibility settings by membership status<\/li>\n<li>Registration policy framework: open, admin approval, admin-only<\/li>\n<li>Custom member fields with privacy and editability controls<\/li>\n<li>WordPress role sync rules<\/li>\n<li>CSV member import and export<\/li>\n<li>Member dashboard and registration shortcodes<\/li>\n<li>Developer-friendly modern architecture<\/li>\n<\/ul>","raw_excerpt":"WordPress membership built around the membership cycle, not transactions. Free, flexible, and designed with clubs and nonprofits in mind.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/arq.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/241723","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/arq.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/arq.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/arq.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=241723"}],"author":[{"embeddable":true,"href":"https:\/\/arq.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/jerrystewart99"}],"wp:attachment":[{"href":"https:\/\/arq.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=241723"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/arq.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=241723"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/arq.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=241723"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/arq.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=241723"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/arq.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=241723"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/arq.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=241723"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}