{"id":358694,"date":"2026-09-01T21:43:19","date_gmt":"2026-09-01T21:43:19","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/membership-access\/"},"modified":"2026-09-01T21:42:42","modified_gmt":"2026-09-01T21:42:42","slug":"memberauth-access","status":"publish","type":"plugin","link":"https:\/\/ga.wordpress.org\/plugins\/memberauth-access\/","author":23554936,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.7.0","stable_tag":"1.7.0","tested":"7.1","requires":"6.4","requires_php":"7.4","requires_plugins":null,"header_name":"MemberAuth \u2013 Login & Content Access for Join It","header_author":"MemberAuth","header_description":"Protect WordPress content using your Join It membership. Members log in with Join It and access content based on membership type and status.","assets_banners_color":"cbcdd8","last_updated":"2026-09-01 21:42:42","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"","header_author_uri":"","rating":0,"author_block_rating":0,"active_installs":0,"downloads":45,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.7.0":{"tag":"1.7.0","author":"ammonsfinest","date":"2026-09-01 21:42:42","revision":3676878}},"upgrade_notice":{"1.7.0":"<p>Version 1.7.0 adopts the MemberAuth identity and memberauth_ data prefix. Pre-release database settings migrate automatically; active OAuth handoffs and member session markers restart. Rename any private WLA_* constants in wp-config.php to the documented MEMBERAUTH_* names before activation.<\/p>"},"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3676878,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3676878,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3676878,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3676878,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.7.0"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3676878,"resolution":"1","location":"assets","locale":"","width":869,"height":617},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3676878,"resolution":"2","location":"assets","locale":"","width":1201,"height":633},"screenshot-3.png":{"filename":"screenshot-3.png","revision":3676878,"resolution":"3","location":"assets","locale":"","width":1213,"height":628},"screenshot-4.png":{"filename":"screenshot-4.png","revision":3676878,"resolution":"4","location":"assets","locale":"","width":1234,"height":638},"screenshot-5.png":{"filename":"screenshot-5.png","revision":3676878,"resolution":"5","location":"assets","locale":"","width":972,"height":568},"screenshot-6.png":{"filename":"screenshot-6.png","revision":3676878,"resolution":"6","location":"assets","locale":"","width":1207,"height":632},"screenshot-7.png":{"filename":"screenshot-7.png","revision":3676878,"resolution":"7","location":"assets","locale":"","width":1222,"height":636},"screenshot-8.png":{"filename":"screenshot-8.png","revision":3676878,"resolution":"8","location":"assets","locale":"","width":1207,"height":610}},"screenshots":{"1":"Connect your Join It organization and sync membership types.","2":"Choose which WordPress pages should require membership access.","3":"Control access by Join It membership type and status.","4":"Review and manage member-access rules in one place.","5":"Create a dedicated Member Login page or use the reusable login shortcode.","6":"Customize the member login experience to match your organization.","7":"Customize what members see when access is unavailable.","8":"Review access activity and use built-in troubleshooting tools."}},"plugin_section":[],"plugin_tags":[43641,278712,31386,1932,17992],"plugin_category":[58],"plugin_contributors":[278713],"plugin_business_model":[],"class_list":["post-358694","plugin","type-plugin","status-publish","hentry","plugin_tags-content-access","plugin_tags-join-it","plugin_tags-member-login","plugin_tags-membership","plugin_tags-private-content","plugin_category-user-management","plugin_contributors-ammonsfinest","plugin_committers-ammonsfinest"],"banners":{"banner":"https:\/\/ps.w.org\/memberauth-access\/assets\/banner-772x250.png?rev=3676878","banner_2x":"https:\/\/ps.w.org\/memberauth-access\/assets\/banner-1544x500.png?rev=3676878","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/memberauth-access\/assets\/icon-128x128.png?rev=3676878","icon_2x":"https:\/\/ps.w.org\/memberauth-access\/assets\/icon-256x256.png?rev=3676878","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/memberauth-access\/assets\/screenshot-1.png?rev=3676878","caption":"Connect your Join It organization and sync membership types."},{"src":"https:\/\/ps.w.org\/memberauth-access\/assets\/screenshot-2.png?rev=3676878","caption":"Choose which WordPress pages should require membership access."},{"src":"https:\/\/ps.w.org\/memberauth-access\/assets\/screenshot-3.png?rev=3676878","caption":"Control access by Join It membership type and status."},{"src":"https:\/\/ps.w.org\/memberauth-access\/assets\/screenshot-4.png?rev=3676878","caption":"Review and manage member-access rules in one place."},{"src":"https:\/\/ps.w.org\/memberauth-access\/assets\/screenshot-5.png?rev=3676878","caption":"Create a dedicated Member Login page or use the reusable login shortcode."},{"src":"https:\/\/ps.w.org\/memberauth-access\/assets\/screenshot-6.png?rev=3676878","caption":"Customize the member login experience to match your organization."},{"src":"https:\/\/ps.w.org\/memberauth-access\/assets\/screenshot-7.png?rev=3676878","caption":"Customize what members see when access is unavailable."},{"src":"https:\/\/ps.w.org\/memberauth-access\/assets\/screenshot-8.png?rev=3676878","caption":"Review access activity and use built-in troubleshooting tools."}],"raw_content":"<!--section=description-->\n<p>MemberAuth \u2013 Login &amp; Content Access for Join It makes it easy for organizations using Join It to create member-only areas in WordPress.<\/p>\n\n<p>The full name above is the product name. The WordPress admin sidebar uses the shorter <strong>MemberAuth<\/strong> label, and <strong>Member Access<\/strong> is the feature inside that menu for protecting content and managing access rules.<\/p>\n\n<p>Connect your Join It organization, choose the WordPress Pages or Posts to protect, and decide which membership types and statuses can view them. Join It remains the source of truth, so there is no need to maintain WordPress roles manually for membership access.<\/p>\n\n<p>Administrators can:<\/p>\n\n<ul>\n<li>Let members log in with Join It.<\/li>\n<li>Protect supported WordPress Page and Post content.<\/li>\n<li>Choose access by Join It membership type and status.<\/li>\n<li>Create a dedicated Member Login page.<\/li>\n<li>Place the reusable [memberauth_login] shortcode on another Page or Post.<\/li>\n<li>Customize member login screens and access messages.<\/li>\n<li>Synchronize Join It membership types.<\/li>\n<li>Control messages for expired, pending, prospective, canceled, or mismatched memberships.<\/li>\n<li>Review access activity and use built-in troubleshooting tools.<\/li>\n<\/ul>\n\n<p>MemberAuth reads the membership information needed for access decisions. Protected content fails closed when no allowed result is available.<\/p>\n\n<p>MemberAuth protects supported WordPress Page and Post content responses using server-side access checks. Direct media file URLs, third-party APIs, custom page-builder data outside the standard content response, custom metadata or SEO fields, and copies previously stored by a CDN or proxy may require separate controls.<\/p>\n\n<p>A Join It organization on an eligible plan with API access is required. Use HTTPS in production and exclude protected pages and the OAuth callback from full-page or CDN caching.<\/p>\n\n<h3>External Services<\/h3>\n\n<p>MemberAuth \u2013 Login &amp; Content Access for Join It depends on Join It and requires a Join It organization with suitable API access.<\/p>\n\n<p>app.joinit.com is used in the member's browser for Join It authorization and login. It is also the destination for the Join It Developer Tools and App Keys setup links.<\/p>\n\n<p>app.joinitapi.com is used by the WordPress server for:<\/p>\n\n<ul>\n<li>OAuth authorization-code exchange using the Client ID and Client Secret;<\/li>\n<li>authenticated user information using the temporary member OAuth access token;<\/li>\n<li>organization details, membership types, and matching membership records using the configured Access Token (AppToken).<\/li>\n<\/ul>\n\n<p>During login, the member's browser is redirected to Join It. MemberAuth does not collect the member's Join It password. Join It returns authenticated identity information, and the member email is used to locate the relevant membership in the connected organization. The temporary member OAuth access token is used for user information and then discarded. The AppToken is stored server-side and used for read-only organization and membership requests.<\/p>\n\n<p>OAuth member login and organization API access are separate. Client ID and Client Secret cannot replace the AppToken, and the AppToken is not used as a member OAuth token.<\/p>\n\n<p>Use of Join It is subject to its <a href=\"https:\/\/joinit.com\/terms\">Terms of Service<\/a> and <a href=\"https:\/\/joinit.com\/privacy\">Privacy Policy<\/a>. MemberAuth sends no analytics or marketing data to the plugin author.<\/p>\n\n<h3>Privacy<\/h3>\n\n<p>MemberAuth may store a local WordPress user and Join It identity association, short-lived normalized membership checks, access activity, and limited diagnostics. When entered in WordPress, the App key, Client Secret, and AppToken are stored locally using authenticated encryption.<\/p>\n\n<p>Members authenticate on Join It. MemberAuth does not collect or store Join It passwords. The temporary member OAuth access token is used for authenticated user information and then discarded. Raw Client Secrets and AppTokens are never written to activity logs, diagnostics, privacy exports, or support reports.<\/p>\n\n<p>Site owners control applicable membership-check and activity-retention settings and can clear saved checks, activity, and diagnostics. Uninstall always removes stored credentials and identity-associated or ephemeral security data. Reusable configuration follows the saved uninstall preference; WordPress users and content are not deleted.<\/p>\n\n<p>The plugin registers WordPress personal-data exporter and eraser callbacks and suggested Privacy Policy text. Review that text for the site's hosting, backups, cache\/CDN, other plugins, and Join It arrangements.<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Install and activate MemberAuth \u2013 Login &amp; Content Access for Join It.<\/li>\n<li>Open MemberAuth &gt; Setup.<\/li>\n<li>Follow the instructions to create a Join It App Key using the Redirect URI shown by the plugin.<\/li>\n<li>Copy the Client Secret when Join It first displays it.<\/li>\n<li>Open Join It App Keys and generate the Access Token for the new App Key.<\/li>\n<li>Enter the App key, Client Secret, and Access Token in MemberAuth.<\/li>\n<li>Select Connect Join It.<\/li>\n<li>Open MemberAuth &gt; Member Access, select Protect Pages, and choose the pages, membership types, and membership statuses that should have access.<\/li>\n<li>Create a Member Login page if desired.<\/li>\n<li>Test a protected page from a private or incognito window with a real Join It member.<\/li>\n<\/ol>\n\n<p>A detailed Setup Guide is included with the plugin. Do not test member login from wp-admin while already signed in as an administrator.<\/p>\n\n<!--section=faq-->\n<dl>\n<dt id=\"do%20i%20need%20a%20join%20it%20account%3F\"><h3>Do I need a Join It account?<\/h3><\/dt>\n<dd><p>Yes. MemberAuth is built for organizations using Join It. An eligible Join It plan with API access is required.<\/p><\/dd>\n<dt id=\"does%20memberauth%20change%20membership%20data%20in%20join%20it%3F\"><h3>Does MemberAuth change membership data in Join It?<\/h3><\/dt>\n<dd><p>No. The plugin reads the organization and membership information needed for access decisions. It does not create or change member, membership, payment, renewal, or password data in Join It.<\/p><\/dd>\n<dt id=\"how%20do%20members%20log%20in%3F\"><h3>How do members log in?<\/h3><\/dt>\n<dd><p>Members are redirected to Join It to authenticate. MemberAuth does not collect their Join It password. Access applies only to the WordPress session that completed Join It login.<\/p><\/dd>\n<dt id=\"can%20i%20protect%20pages%20by%20membership%20type%3F\"><h3>Can I protect pages by membership type?<\/h3><\/dt>\n<dd><p>Yes. You can allow all synchronized membership types or choose specific Join It membership types.<\/p><\/dd>\n<dt id=\"can%20i%20protect%20pages%20by%20membership%20status%3F\"><h3>Can I protect pages by membership status?<\/h3><\/dt>\n<dd><p>Yes. Rules can allow Active, Pending, Prospective, Expired, and Canceled memberships. You choose which statuses are appropriate for each rule.<\/p><\/dd>\n<dt id=\"what%20happens%20if%20join%20it%20cannot%20be%20reached%3F\"><h3>What happens if Join It cannot be reached?<\/h3><\/dt>\n<dd><p>The recommended setting uses a still-valid saved membership result when one is available. Otherwise protected content is not shown. Administrators can instead choose Block Access for every unavailable check.<\/p><\/dd>\n<dt id=\"can%20i%20customize%20the%20member%20login%20screen%3F\"><h3>Can I customize the member login screen?<\/h3><\/dt>\n<dd><p>Yes. Member Screen Design controls the login presentation, and Member Messages controls what members see in common access situations.<\/p><\/dd>\n<dt id=\"can%20i%20create%20a%20dedicated%20login%20page%3F\"><h3>Can I create a dedicated login page?<\/h3><\/dt>\n<dd><p>Yes. MemberAuth can create and track a Member Login page from the Login Page screen.<\/p><\/dd>\n<dt id=\"can%20i%20use%20the%20login%20box%20on%20another%20page%3F\"><h3>Can I use the login box on another page?<\/h3><\/dt>\n<dd><p>Yes. Add [memberauth_login] to a Page, Post, or supported shortcode location.<\/p><\/dd>\n<dt id=\"does%20this%20work%20with%20wordpress%20multisite%3F\"><h3>Does this work with WordPress Multisite?<\/h3><\/dt>\n<dd><p>No. Multisite is not currently supported, and activation is blocked on Multisite.<\/p><\/dd>\n<dt id=\"does%20this%20protect%20direct%20media%20file%20urls%3F\"><h3>Does this protect direct media file URLs?<\/h3><\/dt>\n<dd><p>No. Direct media file URLs are outside the normal protected-content boundary. Use separate media-access controls when files themselves must be private.<\/p><\/dd>\n<dt id=\"does%20uninstall%20remove%20my%20settings%3F\"><h3>Does uninstall remove my settings?<\/h3><\/dt>\n<dd><p>Deactivation preserves configuration. Uninstall always removes credentials and ephemeral security data. The saved preference controls whether reusable rules, assignments, design, and messages are also removed. WordPress users and content are not deleted.<\/p><\/dd>\n<dt id=\"what%20join%20it%20plan%20do%20i%20need%3F\"><h3>What Join It plan do I need?<\/h3><\/dt>\n<dd><p>An eligible Join It plan with API access is required. Check current plan availability with Join It; MemberAuth does not define Join It pricing.<\/p><\/dd>\n<dt id=\"where%20should%20i%20start%20if%20i%20need%20help%3F\"><h3>Where should I start if I need help?<\/h3><\/dt>\n<dd><p>Start with MemberAuth &gt; Troubleshooting and the included Setup Guide. After the plugin listing is available, use its WordPress.org support forum for plugin-specific help. Contact Join It support for Join It account, API access, membership, or billing questions.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.7.0<\/h4>\n\n<ul>\n<li>Bound Join It authorization to the WordPress session that completed Join It login; password-only sessions no longer inherit membership access from a linked account.<\/li>\n<li>Added the four-step Join It key setup, tracked Login Page and shortcode, page-first protection workflow, contained Member Messages editing, and clearer troubleshooting.<\/li>\n<li>Hardened privacy, uninstall cleanup, Page capabilities, URL validation, Multisite handling, accessibility, and localization.<\/li>\n<li>Adopted the distinctive MemberAuth \u2013 Login &amp; Content Access for Join It identity, <code>memberauth-access<\/code> package\/text domain, and <code>memberauth_<\/code> runtime prefix; a one-time migration preserves pre-release configuration and protected-content data under schema 1.2.0. Historical changes are in changelog.txt.<\/li>\n<\/ul>","raw_excerpt":"Protect WordPress content using your Join It membership. Members log in with Join It and access content based on membership type and status.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/ga.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/358694","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/ga.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/ga.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/ga.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=358694"}],"author":[{"embeddable":true,"href":"https:\/\/ga.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/ammonsfinest"}],"wp:attachment":[{"href":"https:\/\/ga.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=358694"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/ga.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=358694"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/ga.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=358694"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/ga.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=358694"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/ga.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=358694"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/ga.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=358694"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}