Skip to main content
Availablev1.0.0 · WordPress 6.9+ · PHP 8.1+

Fennec Members docs

Setup, then the developer reference.

Getting started

Fennec Members isn't on WordPress.org yet. Download the free plugin zip and upload it under Plugins → Add New → Upload Plugin.

  1. Install and activate

    Upload the plugin under Plugins → Add New (WordPress.org listing coming at launch) and activate it. WordPress 6.9+ and PHP 8.1+.

  2. Create a level

    Go to Fennec Members → Levels. Choose free, one-time or subscription, set the price and currency, and optionally a fixed length.

  3. Create the Join and Account pages

    Under Fennec Members → Settings, click “Create pages for me”. You can also add the Join and Account blocks to any page yourself.

  4. Connect Stripe (paid levels only)

    Paste your Stripe secret key under Settings, add a webhook endpoint in Stripe (Developers → Webhooks) with the URL and events shown on the Settings screen, and paste its signing secret.

  5. Restrict content

    Use the “Membership access” box on any post or page, the Members Only block for part of a page, or the option on a category or tag’s edit screen.

Stripe setup

Paid levels use Stripe Checkout with your own secret key. There's no Stripe Connect and no application fee. Add a webhook endpoint in Stripe (Developers → Webhooks) pointing at:

https://yoursite.com/wp-json/fennec-members/v1/webhooks/stripe

Send these events, then paste the endpoint's signing secret under Fennec Members → Settings:

  • checkout.session.completed
  • checkout.session.async_payment_succeeded
  • invoice.paid
  • invoice.payment_failed
  • customer.subscription.updated
  • customer.subscription.deleted

Signatures are verified in the plugin (no Stripe SDK), stale or replayed events are refused, and each event is applied once. Test and live keys are stored separately, so you can run everything in Stripe test mode first.

Blocks and shortcodes

  • Join: the Join block or [fennec_join] for a pricing table, [fennec_join level="3"] for one level.
  • Account: the Account block or [fennec_account].
  • Members only: the Members Only block or [fennec_members_only]…[/fennec_members_only] for part of a page.

Access rules

active and past_due memberships grant access by default (Stripe is still retrying the card). Remove past_due with the fennec_members_access_statuses filter to lock members out as soon as a payment fails. Holding any one of a post's required levels grants access, and a post's own setting overrides its categories.

Developer hooks

Extensions, including the Pro add-on, use only these public hooks. Data an inactive extension wrote is kept when an item is re-saved.

Fennec Members hooks
HookTypePurpose
fennec_members_loadedactionFennec Members wired its hooks (add-ons start here).
fennec_members_capabilityfilterCapability for levels, members and settings (default manage_options).
fennec_members_access_statusesfilterStatuses that grant access (default active, past_due).
fennec_members_post_requirementfilterLevels required for a post (null = public; 0 = any level).
fennec_members_taxonomiesfilterTaxonomies whose terms can be restricted.
fennec_members_notice_htmlfilterThe members-only notice shown to visitors.
fennec_members_gatewaysfilterPayment gateways (Gateway objects).
fennec_members_stripe_checkout_paramsfilterStripe Checkout Session parameters (promotion codes, tax).
fennec_members_stripe_eventactionEvery verified Stripe event, before it is applied.
fennec_members_emailfilterMember emails (return an empty “to” to skip one).
fennec_members_membership_activatedactionFires with the membership, level and activation args.
fennec_members_expose_members_to_mcpfilterMake get-member-status agent-visible (default false).

Suite events

Fired on fennec_event and on fennec_event/<name> with the shared envelope (id, event, plugin, occurred_at, data, site).

  • fennec-members/membership-activated
  • fennec-members/membership-cancelled
  • fennec-members/membership-expired
  • fennec-members/payment-failed

Abilities

  • fennec-members/list-levelsagent-visible

    List membership levels (read-only).

  • fennec-members/get-member-statushidden by default

    A user’s memberships. Personal data, so agents can’t see it unless you opt in.

Data and uninstall

Deactivating never deletes anything. Uninstalling keeps all data unless the fennec_members_delete_data_on_uninstall option is set first (there's a checkbox for it on the plugin's Settings screen). Requires WordPress 6.9+ and PHP 8.1+.