Frequently asked
Do I need WooCommerce?
Only for paid plans. Free plans and admin-granted lifetime access work without Woo. The dashboard surfaces a notice when Woo is missing so paid features are clearly flagged as degraded.
What happened to OMembership engagement?
OMembership engagement was absorbed into OMembership on 2026-05-31. The codebase ships inside OMembership at modules/engage/, preserving the original OMembership engagement\ namespace, the wp_or_ tables, and every omembership_ shortcode. Existing OMembership engagement data and content continue to work after the merge.
Can I migrate from MemberPress / PMPro / RCP / BuddyBoss?
Yes. Four importers ship under includes/importers/. Run from the admin or via WP-CLI:
wp omem importer run --from=memberpress
wp omem importer run --from=pmp
wp omem importer run --from=rcp
wp omem importer run --from=buddybossImporters are idempotent. Re-running after a partial failure picks up where the previous run left off.
How are decisions cached?
Access decisions are memoised in wp_cache under the group omem_access for 5 minutes per (user, scope) pair. Flushing one user's cache:
phpOMembership_Access::flush_cache( $user_id );Where do the badges come from on activation?
OMembership_Activator::seed_default_badges() seeds five rows into wp_omem_badges: welcome, first-lesson, first-course, conversation, helping-hand. Existing rows with the same slug are skipped, so re-running activation is safe.
Does it work with the Account Hub in Orravo Core?
Yes. OMembership_Account_Hub::init() registers portal sections through orravo_account_sections and enqueues assets through orravo_account_enqueue. Both hooks no-op when Orravo Core's hub is absent.
Can I customise the portal markup?
Drop a portal.php into your theme's omembership/ directory. OMembership_Templates::render( 'portal.php', ... ) will pick it up before falling back to the inline renderer. Sections themselves are filterable via omem/portal/sections.
How are DMs rate-limited?
Default rate limits: 30 posts and 60 DMs per hour. Both settings live in community.rate_limit_post_per_hour and community.rate_limit_dm_per_hour. Encryption is wired through the omem/dm/encrypt filter; v1.0 stores plaintext bodies by default.
Where's the data when I uninstall?
uninstall.php drops every wp_omem_ table and removes the OMembership options. The engagement module's wp_or_ tables have their own uninstall path. Both runs leave WordPress core data untouched.

