{"id":1388,"date":"2014-05-30T04:39:19","date_gmt":"2014-05-30T04:39:19","guid":{"rendered":"https:\/\/wordpress.org\/plugins-wp\/simple-membership\/"},"modified":"2026-03-04T01:14:42","modified_gmt":"2026-03-04T01:14:42","slug":"simple-membership","status":"publish","type":"plugin","link":"https:\/\/ceb.wordpress.org\/plugins\/simple-membership\/","author":13858442,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_crdt_document":"","version":"4.7.2","stable_tag":"4.7.2","tested":"7.0","requires":"6.0","requires_php":"7.4","requires_plugins":null,"header_name":"Simple Membership","header_author":"smp7, wp.insider","header_description":"","assets_banners_color":"13afdf","last_updated":"2026-03-04 01:14:42","external_support_url":"","external_repository_url":"","donate_link":"https:\/\/simple-membership-plugin.com\/","header_plugin_uri":"https:\/\/simple-membership-plugin.com\/","header_author_uri":"https:\/\/simple-membership-plugin.com\/","rating":4.6,"author_block_rating":0,"active_installs":40000,"downloads":3258728,"num_ratings":466,"support_threads":8,"support_threads_resolved":6,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.5":{"tag":"1.5","author":"mra13","date":"2014-06-17 02:59:56"},"1.5.1":{"tag":"1.5.1","author":"wp.insider","date":"2014-06-21 05:48:08"},"1.6":{"tag":"1.6","author":"mra13","date":"2014-06-21 05:52:37"},"1.8.0":{"tag":"1.8.0","author":"mra13","date":"2014-10-13 03:19:25"},"2.2.4":{"tag":"2.2.4","author":"mra13","date":"2015-05-25 07:35:40"},"2.2.6":{"tag":"2.2.6","author":"mra13","date":"2015-06-08 00:36:00"},"2.2.7":{"tag":"2.2.7","author":"mra13","date":"2015-06-26 03:37:36"},"2.2.9":{"tag":"2.2.9","author":"mra13","date":"2015-07-04 08:56:54"},"3.0.1":{"tag":"3.0.1","author":"mra13","date":"2015-07-31 03:39:32"},"3.1.1":{"tag":"3.1.1","author":"mra13","date":"2015-11-06 03:58:23"},"3.1.5":{"tag":"3.1.5","author":"mra13","date":"2016-01-10 12:10:23"},"3.1.8":{"tag":"3.1.8","author":"mra13","date":"2016-02-26 12:44:12"},"3.2.1":{"tag":"3.2.1","author":"wp.insider","date":"2016-04-13 17:30:37"},"3.2.2":{"tag":"3.2.2","author":"mra13","date":"2016-04-19 10:06:22"},"3.2.3":{"tag":"3.2.3","author":"mra13","date":"2016-04-25 10:32:36"},"3.2.5":{"tag":"3.2.5","author":"mra13","date":"2016-05-16 07:10:22"},"3.2.6":{"tag":"3.2.6","author":"mra13","date":"2016-06-10 13:27:38"},"3.2.7":{"tag":"3.2.7","author":"mra13","date":"2016-06-17 14:35:09"},"3.3.0":{"tag":"3.3.0","author":"mra13","date":"2016-08-13 11:27:18"},"3.3.1":{"tag":"3.3.1","author":"mra13","date":"2016-09-01 07:31:03"},"3.3.2":{"tag":"3.3.2","author":"mra13","date":"2016-09-16 12:55:33"},"3.3.5":{"tag":"3.3.5","author":"mra13","date":"2016-09-27 11:26:28"},"3.3.6":{"tag":"3.3.6","author":"mra13","date":"2016-10-24 08:19:14"},"3.3.8":{"tag":"3.3.8","author":"mra13","date":"2016-12-04 08:46:27"},"3.3.9":{"tag":"3.3.9","author":"mra13","date":"2016-12-23 13:33:34"},"3.4.0":{"tag":"3.4.0","author":"wp.insider","date":"2017-01-03 08:23:43"},"3.4.3":{"tag":"3.4.3","author":"mra13","date":"2017-03-03 11:28:14"},"3.4.5":{"tag":"3.4.5","author":"mra13","date":"2017-04-06 11:15:44"},"3.4.6":{"tag":"3.4.6","author":"mra13","date":"2017-04-19 08:44:41"},"3.4.7":{"tag":"3.4.7","author":"mra13","date":"2017-06-04 00:48:00"},"3.5.1":{"tag":"3.5.1","author":"mra13","date":"2017-08-01 13:14:31"},"3.5.4":{"tag":"3.5.4","author":"mra13","date":"2017-08-20 11:54:44"},"3.5.7":{"tag":"3.5.7","author":"mra13","date":"2017-11-08 01:42:16"},"3.5.8":{"tag":"3.5.8","author":"mra13","date":"2017-11-24 05:19:33"},"3.6.2":{"tag":"3.6.2","author":"mra13","date":"2018-03-09 10:54:24"},"3.6.6":{"tag":"3.6.6","author":"mra13","date":"2018-07-23 12:02:28"},"3.7.0":{"tag":"3.7.0","author":"mra13","date":"2018-09-12 03:49:48"},"3.7.4":{"tag":"3.7.4","author":"mra13","date":"2019-01-15 07:44:52"},"3.7.9":{"tag":"3.7.9","author":"mra13","date":"2019-05-18 07:40:59"},"3.8.0":{"tag":"3.8.0","author":"mra13","date":"2019-05-26 06:29:17"},"3.8.2":{"tag":"3.8.2","author":"mra13","date":"2019-07-01 08:06:11"},"3.8.4":{"tag":"3.8.4","author":"mra13","date":"2019-07-23 01:48:03"},"3.8.9":{"tag":"3.8.9","author":"mra13","date":"2019-09-14 02:47:20"},"3.9.2":{"tag":"3.9.2","author":"mra13","date":"2019-12-01 00:03:27"},"3.9.4":{"tag":"3.9.4","author":"mra13","date":"2020-01-15 23:45:33"},"3.9.5":{"tag":"3.9.5","author":"mra13","date":"2020-01-29 09:01:21"},"3.9.7":{"tag":"3.9.7","author":"wp.insider","date":"2020-06-11 04:57:21"},"3.9.8":{"tag":"3.9.8","author":"mra13","date":"2020-07-16 05:56:03"},"3.9.9":{"tag":"3.9.9","author":"mra13","date":"2020-07-24 01:21:44"},"4.0.0":{"tag":"4.0.0","author":"mra13","date":"2020-08-18 06:52:39"},"4.0.1":{"tag":"4.0.1","author":"mra13","date":"2020-10-15 08:54:05"},"4.0.5":{"tag":"4.0.5","author":"mra13","date":"2021-06-11 04:03:34"},"4.0.6":{"tag":"4.0.6","author":"wp.insider","date":"2021-07-07 04:17:33"},"4.0.7":{"tag":"4.0.7","author":"mra13","date":"2021-10-07 02:09:01"},"4.1.0":{"tag":"4.1.0","author":"mra13","date":"2022-05-17 12:06:13"},"4.1.4":{"tag":"4.1.4","author":"mra13","date":"2022-07-15 13:33:39"},"4.1.6":{"tag":"4.1.6","author":"mra13","date":"2022-08-20 07:04:42"},"4.1.8":{"tag":"4.1.8","author":"mra13","date":"2022-10-24 08:03:30"},"4.2.0":{"tag":"4.2.0","author":"mra13","date":"2022-11-23 23:16:41"},"4.2.1":{"tag":"4.2.1","author":"mra13","date":"2022-12-18 10:47:30"},"4.2.3":{"tag":"4.2.3","author":"mra13","date":"2023-01-19 05:04:40"},"4.2.4":{"tag":"4.2.4","author":"mra13","date":"2023-02-19 10:49:59"},"4.2.9":{"tag":"4.2.9","author":"mra13","date":"2023-02-27 23:25:10"},"4.3.0":{"tag":"4.3.0","author":"mra13","date":"2023-03-19 07:21:01"},"4.3.1":{"tag":"4.3.1","author":"mra13","date":"2023-04-21 02:27:28"},"4.3.2":{"tag":"4.3.2","author":"mra13","date":"2023-05-05 07:47:10"},"4.3.3":{"tag":"4.3.3","author":"mra13","date":"2023-05-05 14:00:15"},"4.3.4":{"tag":"4.3.4","author":"mra13","date":"2023-08-30 11:04:22"},"4.3.6":{"tag":"4.3.6","author":"mra13","date":"2023-11-08 06:22:17"},"4.3.8":{"tag":"4.3.8","author":"wp.insider","date":"2023-12-16 01:00:21"},"4.3.9":{"tag":"4.3.9","author":"wp.insider","date":"2023-12-16 01:53:25"},"4.4.2":{"tag":"4.4.2","author":"mra13","date":"2024-03-04 12:51:51"},"4.4.3":{"tag":"4.4.3","author":"mra13","date":"2024-04-24 07:14:39"},"4.4.5":{"tag":"4.4.5","author":"mra13","date":"2024-05-02 07:30:11"},"4.4.6":{"tag":"4.4.6","author":"mra13","date":"2024-06-06 07:41:52"},"4.4.7":{"tag":"4.4.7","author":"mra13","date":"2024-06-06 23:37:27"},"4.4.8":{"tag":"4.4.8","author":"mra13","date":"2024-07-08 01:17:16"},"4.4.9":{"tag":"4.4.9","author":"mra13","date":"2024-07-08 01:20:36"},"4.5.0":{"tag":"4.5.0","author":"wp.insider","date":"2024-07-26 05:06:48"},"4.5.1":{"tag":"4.5.1","author":"mra13","date":"2024-07-31 09:33:52"},"4.5.2":{"tag":"4.5.2","author":"mra13","date":"2024-09-06 07:10:23"},"4.5.3":{"tag":"4.5.3","author":"mra13","date":"2024-09-10 11:26:41"},"4.5.4":{"tag":"4.5.4","author":"mra13","date":"2024-09-18 12:37:50"},"4.5.5":{"tag":"4.5.5","author":"mra13","date":"2024-10-30 06:13:52"},"4.5.6":{"tag":"4.5.6","author":"mra13","date":"2024-11-16 07:41:13"},"4.5.7":{"tag":"4.5.7","author":"mra13","date":"2024-11-17 06:10:48"},"4.5.8":{"tag":"4.5.8","author":"mra13","date":"2024-12-03 10:47:31"},"4.5.9":{"tag":"4.5.9","author":"mra13","date":"2025-01-08 07:20:44"},"4.6.0":{"tag":"4.6.0","author":"mra13","date":"2025-02-10 06:54:55"},"4.6.1":{"tag":"4.6.1","author":"mra13","date":"2025-02-15 10:55:28"},"4.6.2":{"tag":"4.6.2","author":"mra13","date":"2025-03-23 12:21:23"},"4.6.3":{"tag":"4.6.3","author":"mra13","date":"2025-04-07 12:20:46"},"4.6.4":{"tag":"4.6.4","author":"mra13","date":"2025-05-30 13:56:50"},"4.6.5":{"tag":"4.6.5","author":"mra13","date":"2025-06-29 03:17:33"},"4.6.6":{"tag":"4.6.6","author":"mra13","date":"2025-08-26 03:45:19"},"4.6.7":{"tag":"4.6.7","author":"mra13","date":"2025-08-31 07:06:41"},"4.6.8":{"tag":"4.6.8","author":"mra13","date":"2025-09-29 03:49:55"},"4.6.9":{"tag":"4.6.9","author":"mra13","date":"2025-12-01 23:38:47"},"4.7.0":{"tag":"4.7.0","author":"mra13","date":"2026-01-21 09:28:40"},"4.7.1":{"tag":"4.7.1","author":"mra13","date":"2026-02-04 02:50:48"},"4.7.2":{"tag":"4.7.2","author":"mra13","date":"2026-03-04 01:14:42"}},"upgrade_notice":{"":"<p>None.<\/p>"},"ratings":{"1":32,"2":9,"3":10,"4":25,"5":390},"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":974529,"resolution":"128x128","location":"assets","locale":""}},"assets_banners":{"banner-772x250.jpg":{"filename":"banner-772x250.jpg","revision":923517,"resolution":"772x250","location":"assets","locale":""}},"assets_blueprints":{"blueprint.json":{"filename":"blueprint.json","revision":3474090,"resolution":false,"location":"assets","locale":"","contents":"{\"$schema\":\"https:\\\/\\\/playground.wordpress.net\\\/blueprint-schema.json\",\"landingPage\":\"\\\/wp-admin\\\/admin.php?page=simple_wp_membership_settings\",\"preferredVersions\":{\"php\":\"8.1\",\"wp\":\"latest\"},\"phpExtensionBundles\":[\"kitchen-sink\"],\"steps\":[{\"step\":\"login\",\"username\":\"admin\",\"password\":\"password\"},{\"step\":\"installPlugin\",\"options\":{\"activate\":true},\"pluginData\":{\"resource\":\"wordpress.org\\\/plugins\",\"slug\":\"simple-membership\"}},{\"step\":\"installTheme\",\"themeZipFile\":{\"resource\":\"wordpress.org\\\/themes\",\"slug\":\"twentytwentyfour\"}}]}"}},"all_blocks":{"simple-membership\/payment-button":{"name":"simple-membership\/payment-button","title":"Payment Button"}},"tagged_versions":["1.5","1.5.1","1.6","1.8.0","2.2.4","2.2.6","2.2.7","2.2.9","3.0.1","3.1.1","3.1.5","3.1.8","3.2.1","3.2.2","3.2.3","3.2.5","3.2.6","3.2.7","3.3.0","3.3.1","3.3.2","3.3.5","3.3.6","3.3.8","3.3.9","3.4.0","3.4.3","3.4.5","3.4.6","3.4.7","3.5.1","3.5.4","3.5.7","3.5.8","3.6.2","3.6.6","3.7.0","3.7.4","3.7.9","3.8.0","3.8.2","3.8.4","3.8.9","3.9.2","3.9.4","3.9.5","3.9.7","3.9.8","3.9.9","4.0.0","4.0.1","4.0.5","4.0.6","4.0.7","4.1.0","4.1.4","4.1.6","4.1.8","4.2.0","4.2.1","4.2.3","4.2.4","4.2.9","4.3.0","4.3.1","4.3.2","4.3.3","4.3.4","4.3.6","4.3.8","4.3.9","4.4.2","4.4.3","4.4.5","4.4.6","4.4.7","4.4.8","4.4.9","4.5.0","4.5.1","4.5.2","4.5.3","4.5.4","4.5.5","4.5.6","4.5.7","4.5.8","4.5.9","4.6.0","4.6.1","4.6.2","4.6.3","4.6.4","4.6.5","4.6.6","4.6.7","4.6.8","4.6.9","4.7.0","4.7.1","4.7.2"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3303613,"resolution":"1","location":"assets","locale":""},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3303613,"resolution":"2","location":"assets","locale":""},"screenshot-3.png":{"filename":"screenshot-3.png","revision":3303613,"resolution":"3","location":"assets","locale":""},"screenshot-4.png":{"filename":"screenshot-4.png","revision":3303613,"resolution":"4","location":"assets","locale":""},"screenshot-5.png":{"filename":"screenshot-5.png","revision":3303613,"resolution":"5","location":"assets","locale":""}},"screenshots":{"1":"Example of the member registration page.","2":"Example of the member login page.","3":"Example of the membership payment landing page.","4":"Example of the settings menu.","5":"Example of membership level management."},"jetpack_post_was_ever_published":false},"plugin_section":[],"plugin_tags":[81,1919,19898,1932,17049],"plugin_category":[38,45,58],"plugin_contributors":[78954,78955],"plugin_business_model":[],"class_list":["post-1388","plugin","type-plugin","status-publish","hentry","plugin_tags-member","plugin_tags-members","plugin_tags-members-only","plugin_tags-membership","plugin_tags-memberships","plugin_category-authentication","plugin_category-ecommerce","plugin_category-user-management","plugin_contributors-smp7","plugin_contributors-wpinsider-1","plugin_committers-mra13","plugin_committers-wpinsider-1","plugin_support_reps-alexanderfoxc","plugin_support_reps-mbrsolution"],"banners":{"banner":"https:\/\/ps.w.org\/simple-membership\/assets\/banner-772x250.jpg?rev=923517","banner_2x":false,"banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/simple-membership\/assets\/icon-128x128.png?rev=974529","icon_2x":false,"generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/simple-membership\/assets\/screenshot-1.png?rev=3303613","caption":"Example of the member registration page."},{"src":"https:\/\/ps.w.org\/simple-membership\/assets\/screenshot-2.png?rev=3303613","caption":"Example of the member login page."},{"src":"https:\/\/ps.w.org\/simple-membership\/assets\/screenshot-3.png?rev=3303613","caption":"Example of the membership payment landing page."},{"src":"https:\/\/ps.w.org\/simple-membership\/assets\/screenshot-4.png?rev=3303613","caption":"Example of the settings menu."},{"src":"https:\/\/ps.w.org\/simple-membership\/assets\/screenshot-5.png?rev=3303613","caption":"Example of membership level management."}],"raw_content":"<!--section=description-->\n<h4>A flexible, well-supported, and easy-to-use WordPress membership plugin for offering free and premium content from your WordPress site<\/h4>\n\n<p>The simple membership plugin lets you protect your posts and pages so only your members can view the protected content.<\/p>\n\n<h4>Unlimited Membership Access Levels<\/h4>\n\n<p>Set up unlimited membership levels (example: free, silver, gold etc) and protect your posts and pages using the membership levels you create.<\/p>\n\n<h4>Flexible Membership Duration Options<\/h4>\n\n<p>Simple Membership supports multiple membership duration models, including:<\/p>\n\n<ul>\n<li>Fixed duration (days, weeks, months, or years)<\/li>\n<li>No expiry \/ until canceled<\/li>\n<li>Fixed future expiry date<\/li>\n<li>Annual memberships (calendar or fiscal year based)<\/li>\n<li>Subscription-driven access<\/li>\n<\/ul>\n\n<p>Each membership level can be configured independently to match your access rules.<\/p>\n\n<h4>User Friendly Interface for Content Protection<\/h4>\n\n<p>When you are editing a post or page in the WordPress editor, you can select to protect that post or page for your members.<\/p>\n\n<p>Non-members viewing a protected page will be prompted to log in or become a member.<\/p>\n\n<h4>Have Free and Paid Memberships<\/h4>\n\n<p>You can configure it to have free and\/or paid memberships on your site. Paid membership payment is handled securely via PayPal. Membership payment can also be accepted using Stripe or Braintree payment gateways.<\/p>\n\n<p>Both one time and recurring\/subscription payments are supported for PayPal and Stripe.<\/p>\n\n<p>You can accept one time membership payment via Braintree payment gateway.<\/p>\n\n<p>Option to make membership payment buttons using the new PayPal Checkout API.<\/p>\n\n<p>There is also option to use PayPal smart buttons for membership payment.<\/p>\n\n<p>You can enable email activation or email confirmation for the free memberships.<\/p>\n\n<h4>Membership Payments Log<\/h4>\n\n<p>All the payments from your members are recorded in the plugin. You can view them anytime by visiting the payments menu from the admin dashboard.<\/p>\n\n<h4>Developer API<\/h4>\n\n<p>There are lots of action and filter hooks that a developer can use to customize the plugin.<\/p>\n\n<p>There is also an API that can be used to query, create, update member accounts.<\/p>\n\n<h4>Member Login Widget on The Sidebar<\/h4>\n\n<p>You can easily add a member login widget on the sidebar of your site. Simply use the login form shortcode in the sidebar widget.<\/p>\n\n<p>You can also customize the member login widget by creating a custom template file in your theme (or child theme) folder.<\/p>\n\n<p>Option to show a password visibility toggle option in the login form.<\/p>\n\n<h4>Documentation<\/h4>\n\n<p>Read the <a href=\"https:\/\/simple-membership-plugin.com\/simple-membership-documentation\/\">setup documentation<\/a> after you install the plugin to get started.<\/p>\n\n<h4>Plugin Support<\/h4>\n\n<p>If you encounter any issues with this plugin, please visit our website to post on the support forum or contact us directly.\nhttps:\/\/simple-membership-plugin.com\/<\/p>\n\n<p>You can create a free forum account to ask your questions.<\/p>\n\n<h4>Additional Features<\/h4>\n\n<ul>\n<li>Works with any WordPress theme.<\/li>\n<li>Ability to protect photo galleries.<\/li>\n<li>Ability to protect attachment pages.<\/li>\n<li>Show teaser content to convert visitors into members.<\/li>\n<li>Comments on your protected posts will also be protected automatically.<\/li>\n<li>There is an option to enable debug logging so you can troubleshoot membership payment related issues easily (if any).<\/li>\n<li>Ability to customize the content protection message that gets shown to non-members.<\/li>\n<li>Ability to partially protect post or page content.<\/li>\n<li>You can apply protection to posts and pages in bulk.<\/li>\n<li>Ability to use merge vars in the membership email notification.<\/li>\n<li>Membership management side is handled by the plugin.<\/li>\n<li>Ability to manually approve your members.<\/li>\n<li>Ability to import WordPress users as members.<\/li>\n<li>Search for a member's profile in your WP admin dashboard.<\/li>\n<li>Filter members list by account status.<\/li>\n<li>Filter members list by membership level.<\/li>\n<li>Site admins can save private notes about members, providing a convenient way to keep track of important information.<\/li>\n<li>Can be translated to any language.<\/li>\n<li>Hide the admin toolbar from the frontend of your site.<\/li>\n<li>Allow your members to delete their membership accounts.<\/li>\n<li>Send quick notification email to your members.<\/li>\n<li>Email all members by membership level, with an option to filter by account status.<\/li>\n<li>Customize the password reset email for members.<\/li>\n<li>Use Google reCAPTCHA on your member registration form.<\/li>\n<li>Use Google reCAPTCHA on your member login and password reset form.<\/li>\n<li>The login and registration widgets will be responsive if you are using a responsive theme.<\/li>\n<li>Ability to restrict the commenting feature on your site to your members only.<\/li>\n<li>Front-end member registration page.<\/li>\n<li>Front-end member profiles.<\/li>\n<li>Front-end member login page.<\/li>\n<li>Option to configure after login redirection for members.<\/li>\n<li>Option to configure after registration redirect for members.<\/li>\n<li>Option to configure after logout redirection for members.<\/li>\n<li>Option force the members to use strong password.<\/li>\n<li>Option to make the users agree to your terms and conditions before they can register for a member account.<\/li>\n<li>Option to make the users agree to your privacy policy before they can register for a member account.<\/li>\n<li>Option to hide the registration\/join option. Useful if you prefer visitors not to see the registration option on your site.<\/li>\n<li>Option to automatically logout the members when they close the browser.<\/li>\n<li>Ability to forward the payment notification to an external URL for further processing.<\/li>\n<li>Option to configure whitelisting for user email addresses to allow registration only from specific email addresses or email domains.<\/li>\n<li>Option to configure blacklisting for user email addresses to block registration from certain email addresses or email domains.<\/li>\n<li>Allows you to set an active login limit for members, helping to prevent account sharing.<\/li>\n<li>Option to enable and set failed login attempt limit, which helps to protect against brute force attacks.<\/li>\n<li>Option to enable login event tracking, allowing you to view the history of member logins.<\/li>\n<li>Option to reset the settings and data of the plugin to start fresh.<\/li>\n<li>Option to configure PayPal payment buttons for memberships (one-time and recurring payments).<\/li>\n<li>Option to configure Stripe payment buttons for memberships (one-time and recurring payments).<\/li>\n<li>Option to configure Braintree payment buttons for memberships (one-time payments).<\/li>\n<li>Free Social Login addon that lets users log in with their Google or Facebook accounts.<\/li>\n<li>The plugin is actively maintained and we are working on new features for the plugin.<\/li>\n<li>Browse the <a href=\"https:\/\/simple-membership-plugin.com\/simple-membership-documentation\/\">plugin documentation<\/a> to learn more about the features of this plugin.<\/li>\n<\/ul>\n\n<h4>Language Translations<\/h4>\n\n<p>The following language translations are already available:<\/p>\n\n<ul>\n<li>English<\/li>\n<li>German<\/li>\n<li>French<\/li>\n<li>Spanish<\/li>\n<li>Spanish (Venezuela)<\/li>\n<li>Chinese<\/li>\n<li>Portuguese (Brazil)<\/li>\n<li>Portuguese (Portugal)<\/li>\n<li>Swedish<\/li>\n<li>Macedonian<\/li>\n<li>Polish<\/li>\n<li>Turkish<\/li>\n<li>Russian<\/li>\n<li>Dutch (Netherlands)<\/li>\n<li>Dutch (Belgium)<\/li>\n<li>Romanian<\/li>\n<li>Danish<\/li>\n<li>Lithuanian<\/li>\n<li>Serbian<\/li>\n<li>Japanese<\/li>\n<li>Greek<\/li>\n<li>Latvian<\/li>\n<li>Indonesian<\/li>\n<li>Hebrew<\/li>\n<li>Catalan<\/li>\n<li>Hungarian<\/li>\n<li>Bosnian (Bosnia and Herzegovina)<\/li>\n<li>Slovak<\/li>\n<li>Italian<\/li>\n<li>Norwegian<\/li>\n<li>Mexican<\/li>\n<li>Arabic<\/li>\n<li>Czech<\/li>\n<li>Finnish<\/li>\n<\/ul>\n\n<p>You can translate the plugin using the language <a href=\"https:\/\/simple-membership-plugin.com\/translate-simple-membership-plugin\/\">translation documentation<\/a>.<\/p>\n\n<!--section=installation-->\n<p>Do the following to install the membership plugin:<\/p>\n\n<ol>\n<li>Upload the 'simple-membership.zip' file from the Plugins -&gt; Add New page in the WordPress administration panel.<\/li>\n<li>Activate the plugin through the 'Plugins' menu in WordPress.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"where%20can%20i%20find%20complete%20documentation%20for%20this%20plugin%3F\"><h3>Where can I find complete documentation for this plugin?<\/h3><\/dt>\n<dd><p>You can find the full documentation for this plugin on the <a href=\"https:\/\/simple-membership-plugin.com\/simple-membership-documentation\/\">Simple Membership plugin documentation<\/a> page.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>4.7.2<\/h4>\n\n<ul>\n<li>Improved compatibility with bbPress. Updating a member's WordPress role will no longer interfere with their existing forum roles.<\/li>\n<li>Stripe webhook signing secret key missing notice now shows on admin dashboard.<\/li>\n<li>Added a new filter hook 'swpm_payment_button_shortcode_start_output' to allow custom code to execute at the start of the payment button shortcode execution.<\/li>\n<li>Added extra checks in the validate_subscription_checkout_txn_data() function to ensure the subscription checkout transaction data is valid before processing it.<\/li>\n<li>SWPM Cloudflare Turnstile addon updated to handle some edge cases and added extra validation for the Turnstile response.<\/li>\n<\/ul>\n\n<h4>4.7.1<\/h4>\n\n<ul>\n<li>Added support for annual memberships, allowing you to create calendar year based memberships.<\/li>\n<li>Added an option to delete the plugin generated required pages in the Reset Data addon.<\/li>\n<li>The Stripe webhook endpoint URL is also displayed in the Stripe settings menu tab for easy copy-paste.<\/li>\n<li>Added basic Stripe webhook event validation for sites that are not using the webhook signing secret option in the settings menu.<\/li>\n<\/ul>\n\n<h4>4.7.0<\/h4>\n\n<ul>\n<li>Improved the validation JavaScript for the Add\/Edit Membership Level screen to simplify the interface.<\/li>\n<li>Added extra validation checks to the front-end profile update process to improve security.<\/li>\n<\/ul>\n\n<h4>4.6.9<\/h4>\n\n<ul>\n<li>Added a new {expiry_date} email merge tag.<\/li>\n<li>Bulk account activate notification email body now supports email merge tags.<\/li>\n<li>Spanish language translation files updated.<\/li>\n<li>Added center text align CSS to the WooCommerce protection message.<\/li>\n<li>Romanian Leu currency can now be used for stripe buy now buttons.<\/li>\n<\/ul>\n\n<h4>4.6.8<\/h4>\n\n<ul>\n<li>Added a new free social login addon to allow users to log in using their social media accounts. Refer to <a href=\"https:\/\/simple-membership-plugin.com\/simple-membership-social-login-addon\/\">this documentation<\/a> for more information.<\/li>\n<li>Added a payment button shortcode field in the button edit interface for easy copy-and-paste.<\/li>\n<li>Introduced a new filter hook 'swpm_after_login_form_output' to display custom content below the login form on the login page.<\/li>\n<li>Updated the French language translation file. Thanks to David Ramery for the update.<\/li>\n<li>Updated the code to remove a minor PHP notice issue.<\/li>\n<li>Improved the WooCommerce page protection message HTML.<\/li>\n<li>Enhanced the date selector UI with a button to quickly return to the current month.<\/li>\n<li>Added a new filter hook 'swpm_edit_profile_form_before_submit' to allow custom code to display content before the submit button in the profile form of admin dashboard.<\/li>\n<\/ul>\n\n<h4>4.6.7<\/h4>\n\n<ul>\n<li>Improved the renewal logic to include a check for account inactivity so access starts date is calculated correctly.<\/li>\n<li>WooCommerce product pages can now be protected using the standard content protection feature.<\/li>\n<li>Added a new email settings section for the manual approval notification email.<\/li>\n<li>Added a button in the Edit\/View Member profile page to let admins easily approve accounts using the manual approval feature.<\/li>\n<li>Fixed an issue with the Stripe button when using a custom button image.<\/li>\n<\/ul>\n\n<h4>4.6.6<\/h4>\n\n<ul>\n<li>Added a new filter hook 'swpm_override_login_limit' to allow custom code to override the active login limit check.<\/li>\n<li>The default subject for the account upgrade email has been changed to \"Account Upgrade Confirmation Email\" for clarity.<\/li>\n<li>The default subject for the account renewal email has been changed to \"Account Renewal Confirmation Email\" for clarity.<\/li>\n<li>Added debug logging for after logout redirection URL.<\/li>\n<li>Changed the call to wp_logout() function to use a custom logout method to prevent the 'wp_logout' action hook from being triggered, which causes our plugin's after logout redirection to not work properly.<\/li>\n<li>Added a new action hook 'swpm_wp_user_logout_complete' that is triggered after the wp_destroy_current_session() and wp_clear_auth_cookie() functions are called in the custom logout method.<\/li>\n<li>The plugin now hooks to the 'swpm_after_logout_function_executed' hook instead of the 'swpm_logout' hook to handle after logout tasks. This allows for better clarity with the action name.<\/li>\n<li>Fixed the description of the \"Disable Access to WP Dashboard\" setting.<\/li>\n<li>Added new filter hook 'swpm_email_prompt_to_complete_registration_body' to allow custom code to modify the body of the email sent to members prompting them to complete their registration.<\/li>\n<li>Added new function 'swpm_dummy_country_names_for_translation' to include dummy country names to the POT file for translation purposes.<\/li>\n<li>Replaced the jQuery code for the Stripe button with vanilla JavaScript to resolve fatal errors on certain themes.<\/li>\n<li>Updated the code to handle the new Stripe webhook API format for subscriptions.<\/li>\n<li>Improved the account access start date updating issue when recurring subscription charge attempt fails.<\/li>\n<li>All setcookie function has updated for secure http only protocols.<\/li>\n<li>Some translation related improvements also regenerated a new POT file for the plugin.<\/li>\n<li>Spanish language translation updated.<\/li>\n<\/ul>\n\n<h4>4.6.5<\/h4>\n\n<ul>\n<li>Added a new feature to send separate email notifications for account upgrades and renewals.<\/li>\n<li>New feature added to display warning message above subscription payment buttons if there is already an active subscription.<\/li>\n<li>Translation string updated for the 'Auto Delete Pending Account' field.<\/li>\n<li>Added a new option to resend member account activation email in the Tools menu.<\/li>\n<li>Renamed the 'has_tag' function to 'has_email_merge_tag' to avoid confusion.<\/li>\n<li>Added a new filter hook 'swpm_payment_button_note_msg_output' to allow custom code to insert a message or note before the payment button.<\/li>\n<li>Added a new filter hook 'swpm_hide_payment_button' to allow custom code to hide the payment button based on custom logic.<\/li>\n<li>Added a validation for the PayPal client ID to ensure it is not empty when using the PayPal PPCP checkout.<\/li>\n<li>For PayPal PPCP guest checkout, it will query the subscription or order details from the PayPal API to retrieve the email address (if needed).<\/li>\n<li>Updated the plugin name to \"Simple Membership\" in the main PHP file to match the plugin slug and readme file.<\/li>\n<\/ul>\n\n<h4>4.6.4<\/h4>\n\n<ul>\n<li>Added a new feature to limit failed login attempts. Read the <a href=\"https:\/\/simple-membership-plugin.com\/configuring-the-failed-login-attempt-limit-feature\/\">failed login limit documentation<\/a> for more information.<\/li>\n<li>Improved user experience by disabling browser auto-fill on the password field in the new registration form.<\/li>\n<li>Added a debug log entry for successful user logouts.<\/li>\n<li>Refactored Stripe-related code for the client reference ID.<\/li>\n<li>Added new filter hook: 'swpm_paypal_ppcp_order_shipping_preference' to customize the shipping preference in PayPal PPCP checkout.<\/li>\n<li>Added new filter hook: 'swpm_paypal_ppcp_order_item_category' to customize the item category in PayPal PPCP checkout.<\/li>\n<li>For PayPal PPCP checkout, if no Thank You page URL is set, a default success message will now appear above the PayPal button.<\/li>\n<li>Introduced a new feature: users are redirected to the paid registration page after successful payment to complete their account setup.<\/li>\n<li>Added 'redirect_to_after_cancel' parameter to the 'swpm_show_subscriptions_and_cancel_link' shortcode to allow redirection to a custom URL after subscription cancellation.<\/li>\n<li>Added escaping functions to improve security on the payment button configuration admin screen.<\/li>\n<li>Introduced two new utility functions: <code>apply_protection_to_post<\/code> and <code>apply_protection_to_posts<\/code>.<\/li>\n<li>Addressed minor PHP notices and warning-related issues.<\/li>\n<\/ul>\n\n<h4>4.6.3<\/h4>\n\n<ul>\n<li>WordPress 6.8 compatibility related changes.<\/li>\n<li>Added a new feature to set 'default content protection' settings.<\/li>\n<li>Password reset processing code refactored to be in 'wp' hook.<\/li>\n<li>Modified the 'Tools -&gt; System Info' menu to accurately display the language translation directory path: \/wp-content\/languages\/plugins\/<\/li>\n<li>Updated the Hungarian language translation file.<\/li>\n<li>WordPress 6.8 uses new password hashing. We have updated the function that is used to check the password so it is compatible with WP 6.8.<\/li>\n<\/ul>\n\n<h4>4.6.2<\/h4>\n\n<ul>\n<li>Added a new Reports menu to display various membership-related statistics and reports.<\/li>\n<li>Added a new DB table for storing the member's login history.<\/li>\n<li>Added a new filter hook 'swpm_replace_dynamic_tags' to allow addons to replace dynamic tags in the email notification.<\/li>\n<li>Renamed the function \"email_activation()\" to \"handle_email_activation()\" for clarity.<\/li>\n<li>Fixed a translation issue in the account delete feature's confirmation message.<\/li>\n<li>Added debug logging statements in the calculate_access_start_date_for_account_update() function.<\/li>\n<li>Updated the admin menu page title to maintain consistency with other menu items.<\/li>\n<li>New option added for Stripe webhook event verification.<\/li>\n<li>Added support for Stripe's 100% discount code feature.<\/li>\n<li>Stripe API version updated to the latest version.<\/li>\n<\/ul>\n\n<h4>4.6.1<\/h4>\n\n<ul>\n<li>This release primarily includes optimizations and enhancements for the user login process with the 'Remember Me' option.<\/li>\n<li>Note: After updating to this version, members will need to log in again.<\/li>\n<li>The SWPM auth cookie structure now includes the 'Remember Me' value.<\/li>\n<li>When \"remember me\" is not checked, we use a session cookie to match with WordPress's cookie expiration.<\/li>\n<li>The 'Remember Me' option is now respected for SWPM logins originating from WordPress.<\/li>\n<li>After changing or updating the password from the edit profile page, the cookie is reset using the original remember-me flag.<\/li>\n<li>Updated the Dutch language translation file.<\/li>\n<\/ul>\n\n<h4>4.6.0<\/h4>\n\n<ul>\n<li>Added a new option to bulk delete all member accounts with a specific account status.<\/li>\n<li>Updated the reference to the tools menu in the admin dashboard to point to the new location.<\/li>\n<li>Front-end registration form now renders via the 'swpm_load_template()' method.<\/li>\n<li>A getter method added to the SwpmAccessControl class.<\/li>\n<li>Improved the handling of the password reset request form to prevent resubmission on page reload.<\/li>\n<li>Added an extra check in the user delete function to check if the user has administrator role.<\/li>\n<li>Updated the system to display an error message when a password request is made for an incomplete account.<\/li>\n<li>New 'System Info' tab added in the Tools menu.<\/li>\n<li>Fixed a minor PHP notice issue.<\/li>\n<li>Braintree SDK updated to v6.23.0.<\/li>\n<li>Minor improvement to the category protection UI.<\/li>\n<li>Added the <a href=\"https:\/\/simple-membership-plugin.com\/simple-membership-and-cloudflare-turnstile-integration-addon\/\">Cloudflare Turnstile CAPTCHA integration<\/a>.<\/li>\n<\/ul>\n\n<h4>4.5.9<\/h4>\n\n<ul>\n<li>The \"Tools\" tab has been relocated to its own standalone menu item.<\/li>\n<li>Added a new action hook 'swpm_admin_account_status_updated' that will be triggered when the account status of a member is changed in the admin dashboard.<\/li>\n<li>Added a new action hook 'swpm_account_status_updated' that will be triggered when the account status update function is called for a member.<\/li>\n<li>Backwards compatibility for the 'profile_update' action hook.<\/li>\n<li>Updated the Stripe subscription payment button configuration interface to include the word 'Price' ID to reflect the changes made by Stripe.<\/li>\n<li>Small refactoring of the shortcode handler class to make it more efficient.<\/li>\n<li>Introduced a new settings option to hide membership level field on the registration form.<\/li>\n<li>Options related to the WP toolbar and admin dashboard have been grouped together in the advanced settings menu.<\/li>\n<li>First and Last name values can be set to empty in the member's profile edit interface.<\/li>\n<\/ul>\n\n<h4>4.5.8<\/h4>\n\n<ul>\n<li>Allow promo code feature added to stripe subscription payment buttons.<\/li>\n<li>Added a new utility function 'get_all_protected_post_ids_list_from_db' to retrieve all the protected post IDs from the database.<\/li>\n<li>Updated the French language translation file.<\/li>\n<li>Active login limit feature conflict issue fixed for password reset event.<\/li>\n<li>Added a new filter hook 'swpm_override_protected_post_exclusion_from_search' that can be used to override the protected post exclusion from the search query.<\/li>\n<li>The asterisk character (*) is not allowed in the username field to maintain consistency with WordPress username character restrictions.<\/li>\n<\/ul>\n\n<h4>4.5.7<\/h4>\n\n<ul>\n<li>Enhanced the efficiency of the 'pre_get_posts' filter hook handling function to address issues encountered on some sites during page saving and publishing.<\/li>\n<\/ul>\n\n<h4>4.5.6<\/h4>\n\n<ul>\n<li>New free addon for resetting the settings and data of the plugin. Refer to <a href=\"https:\/\/simple-membership-plugin.com\/simple-membership-reset-settings-and-data-addon\/\">this documentation<\/a> for more information.<\/li>\n<li>The 'load_plugin_textdomain' function call has been moved to init hook with a higher priority for better compatibility with other plguins. This seem to work better for most languages.<\/li>\n<li>Regenerated the language POT file for the plugin to include the latest changes.<\/li>\n<li>Protected posts are now excluded from WP search query if the user doesn't have access to the post.<\/li>\n<\/ul>\n\n<h4>4.5.5<\/h4>\n\n<ul>\n<li>New 'Active Login Limit' feature added. Refer to <a href=\"https:\/\/simple-membership-plugin.com\/configuring-active-login-limit\/\">this documentation<\/a> for more information.<\/li>\n<li>PayPal standard subscription canceled status will also be shown in the 'subscription created' transaction details page.<\/li>\n<li>Do not execute the after_login_redirection and the wp_signon function when the login originates from an external login form (example: WP, WooCommerce etc). This creates a better user experience.<\/li>\n<li>Minor Update to the swpm-orange-box CSS class to make it more readable.<\/li>\n<li>Added a new auto-redirect feature to the 'Full Page Protection Addon' for when a visitor attempts to access a protected page.<\/li>\n<li>Updated the password reset shortcode's email field to use a size of 30.<\/li>\n<li>Added members meta database table to store additional member data.<\/li>\n<li>Added a new option to bulk delete all members from a specific membership level.<\/li>\n<li>Added a twice daily cron job event that will be used to do various cleanup tasks in the future.<\/li>\n<li>Updated settings menu help text CSS to use the 'description' class for improved readability.<\/li>\n<li>Updated the Italian language translation file.<\/li>\n<\/ul>\n\n<p>Full changelog available at <a href=\"https:\/\/plugins.svn.wordpress.org\/simple-membership\/trunk\/change-log-old-versions.txt\">change-log-of-old-versions.txt<\/a><\/p>","raw_excerpt":"Simple membership plugin adds membership functionality to your site. Protect members only content using content protection easily.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/ceb.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/1388","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/ceb.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/ceb.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/ceb.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=1388"}],"author":[{"embeddable":true,"href":"https:\/\/ceb.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/wpinsider-1"}],"wp:attachment":[{"href":"https:\/\/ceb.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=1388"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/ceb.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=1388"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/ceb.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=1388"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/ceb.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=1388"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/ceb.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=1388"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/ceb.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=1388"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}