WP Manifestindependent plugin directory
manifest / users / favr-members

Favr Members

Member records, logins and a member dashboard for Chambers of Commerce and associations — part of Favr Sites.

★ 0stars

Install

Download source zip No release zip yet

This is the repository archive. It installs, but the folder name will carry the branch suffix and updates will not flow.

Install straight from GitHub with WP-CLI:

wp plugin install https://github.com/26am/favr-members/archive/refs/heads/main.zip
No built-in updater. New versions won't appear under Dashboard → Updates. Install new releases yourself, or let Git Updater track the repository.

Member records, member logins and a member dashboard for Chambers of Commerce and associations. It's part of Favr Sites, alongside Favr Directory, and is designed for sites with a mix of individual and business members.

  • Requires: WordPress 6.7+, PHP 8.1+
  • No payments: membership status and renewal dates are managed by staff.
  • Design: see the suite spec in Favr Directory: docs/specs/2026-09-23-favr-suite.md

The model

Every membership is one Member record (favr_member) with a type chosen once:

Individual Business
Staff fill in Name, email, phone, level, status, dates Business name, level, status, dates
Who logs in The member One or more representatives
Directory listing None Linked automatically (with Favr Directory)

The edit screen only shows the fields for the chosen type, so individual members stay simple.

Features

Staff (wp-admin → Members)

  • Tabbed member form (Details, Address, Membership), level picker, and a Login access box:
    • create a login from the record in one click, and email an invite to set a password
    • add business representatives by email
    • resend login emails and remove access
  • List with type, level, status, overdue renewals, logins and contact details. Filters by status/type/level, a pending-applications count in the menu, and a Memberships column on the Users screen.
  • Membership levels are shared with Favr Directory (display order and badge color).
  • Settings: member pages, invite-only or open applications, directory behaviour, automatic lapsing with a grace period, and the email sender name.
  • CSV import/export with a test run (logins column: emails separated by |).

Members (front end)

  • [favr_login]: login, forgot password, and choose a new password. Invite and reset emails link here, never to wp-admin.
  • [favr_account]: the dashboard. The Overview tab shows each membership held or represented (status, level, renewal, member ID). The My Profile tab has contact details and a password change.
  • [favr_register]: membership application. Individual or business, with a honeypot and rate limiting. Applications arrive as Pending and applicants are emailed when approved.
  • People with only the Member role never see wp-admin or the admin bar.

Members-only content

  • The Members Only block wraps any content.
  • [favr_members_only]…[/favr_members_only]
  • A "Members only" toggle in the page/post sidebar hides the whole content and adds noindex.
  • Staff who can edit the page always see everything.

With Favr Directory

  • Saving an active business member creates its listing. For records staff create or import, an existing unlinked listing with exactly the same name is linked instead; applications are never linked automatically (staff choose "Use an existing listing" on the member screen). Pending applications never reach the public directory.
  • Representatives of an active business member edit its listing from the dashboard's My Listing tab (Directory's field policy decides what goes live and what staff approve). Approved listing claims and staff invites from the listing screen add the person to the member record.
  • Level, member since, renewal date and member ID are copied onto the listing, which shows them read-only with an "Edit member →" link.
  • Optionally, lapsed or inactive businesses' listings are hidden and restored when they renew.

Approvals

With Favr Directory or Favr Events active, staff get one Approvals screen. Members adds Membership applications: approving activates the membership (and member-since date), emails the applicant and, for businesses, creates the listing. Declining marks the application inactive and emails the note.

Page builders

  • Blocks: Member Login, Member Account, Membership Application and Members Only, plus a Members only toggle in the page sidebar.
  • Elementor (when active): Member Login, Member Account and Membership Application widgets; Favr Members: Visibility (Advanced tab) on every section, container and widget: show to everyone, current members, non-members, logged-in or logged-out visitors (e.g. a members-only resources section next to a "Join us" section for everyone else); and a Members only switch in each page's Elementor settings. Hidden elements are never rendered, and Elementor's element cache is bypassed for them.
  • Shortcodes remain: [favr_login], [favr_account], [favr_register], [favr_members_only].

For developers

favr_members_is_active( $user_id );        // Active individual membership OR represents an active business.
favr_members_get_memberships( $user_id );  // list<FavrMembers\Model\Member>

// Add a dashboard tab (Favr Directory's "My Listing" and Favr Events' "My Events" use this).
add_filter( 'favr_members_dashboard_tabs', function ( array $tabs, WP_User $user ) {
    $tabs['events'] = array(
        'label'    => 'My Events',
        'priority' => 30,
        'render'   => fn ( WP_User $user ): string => '<p>…</p>',
    );
    return $tabs;
}, 10, 2 );

Hooks: favr_members_member_saved (member, context), favr_members_fields, favr_members_tabs, favr_members_is_active, favr_members_invite_email, favr_members_approval_email, favr_members_membership_card, favr_members_after_tab, favr_members_template, favr_members_loaded. Templates are overridable from yourtheme/favr-members/.

WP-CLI: wp favr-members seed | import <file> [--dry-run] [--send-invites] | export [--file=] | lapse.

Development

composer install   # also rebuilds vendor-prefixed/ (Strauss) and assets/core/ from favr/core
composer test
composer lint

Shared code comes from favr/core. It's bundled under FavrMembers\Vendor\FavrCore\… by Strauss and committed in vendor-prefixed/, so the plugin installs from a plain zip, and different Favr plugins can ship different core versions safely.