Abuja Digital Studio · Est. 2018
Start a Project
DocsOMembershipMember Portal
Reference

Member Portal

OMembershiporravo.com/docs/omembership/member-portal

Portal (E5)

The member portal is a /members page (slug configurable via general.portal_slug) that renders [omembership_portal]. The shortcode delegates to OMembership_Portal::render(), which composes five filterable sections.

Default sections

KeyLabelCallback
homeHomeDashboard summary, active plans count
coursesMy CoursesProgress per course (lessons completed / total)
communityDiscussionsRecent topics from spaces the member can read
directoryMembersSearchable member directory
accountAccountSubscription, billing history, profile

Themes re-order or remove sections via:

phpadd_filter( 'omem/portal/sections', function( array $sections, int $user_id ): array {
    unset( $sections['directory'] );
    return $sections;
}, 10, 2 );

Themes

Eight built-in themes ship: Indigo (default), Aurora, Obsidian, Atelier, Penelope, Nebula, Compass, Prism. The active theme writes a single class to the portal wrapper; CSS variables drive the rest. Theme tokens are documented in assets/css/portal.css and OMembership_Frontend::valid_themes().

Templates

The portal resolves portal.php through OMembership_Templates::render() before falling back to the inline renderer. Drop a portal.php into your theme's omembership/ directory to take full control of the markup.

Launcher

A floating launcher widget renders on every page when settings.launcher.enabled is true. Eight anchor positions are supported:

top-left      top-center    top-right
middle-left                 middle-right
bottom-left   bottom-center bottom-right

Per-axis offsets (offset_x, offset_y) let admins nudge the launcher around existing chat widgets or cookie banners. The launcher renders into wp_footer and skips pages matched by the hide_on glob list.

The widget fetches member state lazily through the REST API:

GET /wp-json/omem/v1/me/progress

The nonce + REST URL are bridged into JS via wp_localize_script under the global OMembershipLauncher.

Account Hub integration

If Orravo Core's unified Account Hub is active, OMembership_Account_Hub::init() registers the portal sections through orravo_account_sections and assets through orravo_account_enqueue, so the same surface renders inside the suite-wide account page. Both hooks no-op when the hub is absent.

Member Portal · OMembership Docs | Orravo