MemberHub for Paid Memberships Pro – Documentation
Version 1.0.0 · Member dashboard add-on · Requires Paid Memberships Pro (free) 3.0+
1. Requirements
- WordPress 6.2 or newer
- PHP 7.4 or newer (PHP 8.x supported)
- Paid Memberships Pro 3.0 or newer (the free plugin from WordPress.org). If it is missing or inactive, MemberHub shows an admin notice and loads nothing else.
- Elementor is optional (only needed for the Elementor widget).
MemberHub creates no database tables and does not use background jobs.
2. Installation
- In Plugins → Add New, install and activate Paid Memberships Pro.
- Go to Memberships → Settings → Pages and let PMPro generate its pages (Account, Billing, Cancel, Checkout, Levels and so on).
- In Plugins → Add New → Upload Plugin, upload
007aj-memberhub-1.0.0.zipand activate it. - The setup wizard opens automatically (see below).
3. First-time setup guide
The same guide is built into the plugin at Memberships → MemberHub → Setup Guide, with a ✓ next to each finished step.
- Install Paid Memberships Pro (3.0+).
- Create your PMPro pages in Memberships → Settings → Pages. MemberHub uses the Membership Account page. If you skip this step, the wizard creates a “Member Dashboard” page for you and uses it.
- Add at least one membership level in Memberships → Settings → Levels. To fill My Content, open posts or pages and tick levels in the “Require Membership” box, or restrict whole categories on the level’s settings screen.
- Run the setup wizard (Memberships → MemberHub → Tools → Run the setup wizard again, or the notice at the top of the admin):
- Click a layout: Sidebar, Top tabs or Card grid.
- Leave “Show the dashboard on your PMPro Account page” ticked.
- Click Finish.
That’s it: the dashboard now appears on the Account page with no shortcode.
- Fine-tune (optional) in the settings tabs described below.
- Check it as a member: log in as a test member (or use a user-switching plugin) and open the Account page. Resize to phone width to see the bottom tab bar.
4. Showing the dashboard
| Method | How |
|---|---|
| Automatic (default) | General → Replace the PMPro Account page. The dashboard is swapped in through a content filter; the page content itself is never changed. PMPro sub-views that use ?view= keep working. |
| Dashboard page | General → Dashboard page: choose any existing page from the list and add the shortcode or block to it. It is used for links and the login redirect. |
| Shortcode | [ajmh_dashboard] or [ajmh_dashboard layout="tabs"] (sidebar, tabs, cards). |
| Block | Add the MemberHub Dashboard block. The layout can be chosen in the block sidebar. The editor shows a placeholder; members see their dashboard on the live page. |
| Elementor | When Elementor is active, drag in the MemberHub Dashboard widget (General category). |
Visitors who are not logged in see a “Log in” button. Styles and scripts load only on pages that show the dashboard.
5. What members see
- Welcome hero with avatar and your welcome text.
- Expiring-soon banner: appears when a membership ends within the number of days set in General (and when the last renewal payment failed), with a Renew / Update billing button.
- Overview: one card per level with status chip (Active, Expiring, Cancelled, Pending), plan cost, next payment date and amount for subscriptions, expiry date and days left, plus Upgrade, Update billing (subscriptions only) and Cancel buttons. Members without a level see a “Choose a plan” button.
- My Content: restricted posts/pages the member can access (each confirmed with PMPro’s own access check), with “New since your last visit” badges. Below it, a Locked: upgrade to unlock row shows up to 6 items from other levels, each linking to that level’s checkout.
- Billing: the member’s own orders (date, order code, level, total, status) with a View invoice link that opens a printable invoice (use the browser’s “Save as PDF”). Buttons link to PMPro’s Update billing and Cancel pages.
- Profile: first/last/display name, email, PMPro User Fields that are set to show on the profile (file fields are not shown), a profile picture upload and a password change (current password required).
- Upgrade: all non-hidden levels with price; the current one is highlighted, others have a Choose button.
- Add-on tabs and custom tabs (see below).
Tabs can be deep-linked, e.g. /membership-account/#billing. With JavaScript off, all sections are shown stacked. Under 768px wide the tabs become a fixed bottom bar.
6. Settings: General
Memberships → MemberHub → General
| Replace the PMPro Account page | On by default. Off restores the stock PMPro page immediately; nothing is deleted. |
| Dashboard page | Optional page picker. Leave on “Use the PMPro Account page” for most sites. |
| Login redirect | Sends members (not administrators) to the dashboard after logging in. Switched off automatically while the PMPro Member Homepages add-on is active. |
| Expiring-soon banner | Days before expiry to show the banner (default 7; 0 turns it off). |
7. Settings: Tabs
Core tabs (Overview, My Content, Billing, Profile, Upgrade): turn on/off, rename, pick an icon from the bundled set, set the order number (lower comes first) and tick the levels that may see it. Leaving every level unticked shows the tab to everyone; “No level” targets logged-in users without a membership.
Custom tabs (up to 10): type a label, choose a type and fill in its content:
- Shortcode – any shortcode, e.g.
[my_downloads]. - Page – choose an existing published page from the list; its content is shown inside the tab.
- Link (URL) – the tab becomes a link to that address.
Two empty rows are always offered; clear a label to delete that tab.
8. Settings: Design
Layout (Sidebar, Top tabs, Card grid), color mode (Light, Dark, Auto = follows the device), accent color, corner radius, density (Comfortable / Compact), hero image (chosen from the Media Library) and welcome text. A small style preview updates as you change color, radius and mode. Fonts are inherited from your theme.
Welcome text merge tags: {first_name}, {level_name}, {expiration_date}, {days_left}.
9. Settings: My Content
Choose which post types to include (default Posts and Pages), how many items to show (1–60), the sort order (newest, oldest, title), whether to show the locked teaser row, and the excerpt length in words (0 hides excerpts).
Content comes from PMPro’s “Require Membership” settings on posts/pages and from categories restricted on each level. The list is cached for 12 hours and refreshed automatically when you save a post, a level or MemberHub settings.
10. Settings: Integrations
MemberHub detects these PMPro add-ons and adds a tab for each one that is active (toggle each off if you don’t want it):
| Add-on | Tab |
|---|---|
| Membership Card | My Card – shows the member’s card via the add-on’s shortcode. |
| Member Badges | Badges – shows the add-on’s badge output. |
| Series: Drip-Feed Content | Series – lists the series the member can access. |
| Courses for Membership | Courses – lists the courses the member can access. |
| Member Directory and Profile Pages | Public Profile – a “View my public profile” button. |
| Member Homepages | No tab; MemberHub’s login redirect is disabled while it is active. |
MemberHub does not include or require any of these add-ons.
11. Settings: Tools
- Export settings as a JSON file, and Import it on another site.
- Remove data on uninstall: when ticked, deleting the plugin removes MemberHub settings, the per-user last-visit dates and profile-picture links, and cached data. Uploaded profile pictures stay in the Media Library. Paid Memberships Pro data and pages are never touched.
- Run the setup wizard again.
12. Security & privacy
- MemberHub only reads PMPro data and never writes to PMPro tables. Billing, cancel and checkout buttons link to PMPro’s own pages; MemberHub never handles payments.
- Invoices: a member can only open their own orders. Opening another member’s order returns 403 Forbidden.
- The profile form uses a nonce, only edits the logged-in user, sanitizes every field and requires the current password for a password change.
- Profile pictures: JPG, PNG or WebP only, real image check, 2 MB maximum.
- Settings screens require the
manage_optionscapability and nonces. - Stored personal data: a “last dashboard visit” time (
ajmh_last_visit) and the profile picture ID (ajmh_avatar_id). Both are included in WordPress’s personal data export and erase tools.
13. Developer hooks
| Hook | Type | Use |
|---|---|---|
ajmh_tabs |
filter | Add/remove/reorder tabs; a tab with a callback renders your own panel. |
ajmh_overview_cards |
filter | Change Overview card HTML. |
ajmh_my_content_query_args |
filter | Adjust the My Content query. |
ajmh_locked_teaser_levels |
filter | Change locked teaser items (post ID ⇒ level IDs). |
ajmh_welcome_text |
filter | Change the welcome text. |
ajmh_before_dashboard |
action | Before the dashboard. |
ajmh_after_tab_{slug} |
action | After a panel, e.g. ajmh_after_tab_billing. |
ajmh_dashboard_viewed |
action | After the dashboard is shown. |
add_filter( 'ajmh_tabs', function ( $tabs, $user_id ) {
$tabs['downloads'] = array(
'type' => 'custom', 'label' => 'Downloads', 'icon' => 'gift', 'order' => 35,
'callback' => function ( $user_id ) { echo '<p>Your files…</p>'; },
);
return $tabs;
}, 10, 2 );
More examples are in docs/hooks.md inside the plugin.
14. FAQ & troubleshooting
The Account page still shows the old PMPro layout. Check that Replace the PMPro Account page is on and that Memberships → Settings → Pages has an Account page. Clear any page cache.
My Content is empty. Only restricted content appears there. Restrict posts/pages to levels with the “Require Membership” box, and check the post types in My Content settings.
A tab is missing. Check the tab is on and its level visibility. Add-on tabs need the add-on to be active.
Caching. Make sure your caching plugin does not cache pages for logged-in users (the default for most).
Paid Memberships Pro is required. Without it, MemberHub shows a notice and stays inactive.
15. Changelog
1.0.0 – First release.
16. Credits & trademark
Icons are simple line icons drawn for this plugin (GPL). Licensed GPLv2 or later.
Paid Memberships Pro is a trademark of Stranger Studios, LLC. This add-on is not affiliated with or endorsed by them.
Support
Support for this plugin is handled through the WPBay support system. Open the plugin’s page on WPBay, go to its support section and open a ticket from your WPBay account. Please include your WordPress, PHP, Paid Memberships Pro and plugin versions and what you were doing when the problem happened.