{"id":333354,"date":"2026-06-30T10:23:19","date_gmt":"2026-06-30T10:23:19","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/effortless-login-protected-content\/"},"modified":"2026-06-30T11:22:53","modified_gmt":"2026-06-30T11:22:53","slug":"effortless-login-protected-content","status":"publish","type":"plugin","link":"https:\/\/ast.wordpress.org\/plugins\/effortless-login-protected-content\/","author":23148025,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"2.0.8","stable_tag":"2.0.8","tested":"7.0","requires":"5.8","requires_php":"7.4","requires_plugins":null,"header_name":"EffortLess Login Protected Content","header_author":"domclic","header_description":"Restrict selected pages and categories to logged-in users only. Hides menu items and redirects unauthenticated users.","assets_banners_color":"9e9e9e","last_updated":"2026-06-30 11:22:53","external_support_url":"","external_repository_url":"","donate_link":"https:\/\/id7.dev\/donate\/","header_plugin_uri":"","header_author_uri":"","rating":0,"author_block_rating":0,"active_installs":0,"downloads":31,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"2.0.7":{"tag":"2.0.7","author":"domclic","date":"2026-06-30 10:22:40"},"2.0.8":{"tag":"2.0.8","author":"domclic","date":"2026-06-30 11:22:53"}},"upgrade_notice":{"2.0.0":"<p>Major update with improved code quality, security enhancements, and WordPress Coding Standards compliance. Recommended for all users.<\/p>"},"ratings":[],"assets_icons":{"icon-128x128.jpg":{"filename":"icon-128x128.jpg","revision":3591395,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.jpg":{"filename":"icon-256x256.jpg","revision":3591395,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.jpg":{"filename":"banner-1544x500.jpg","revision":3591395,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.jpg":{"filename":"banner-772x250.jpg","revision":3591395,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["2.0.7","2.0.8"],"block_files":[],"assets_screenshots":[],"screenshots":{"1":"Admin settings page showing page protection options","2":"Admin settings page showing category protection options","3":"Protected content automatically hidden from menu","4":"Login\/logout link automatically added to menu"}},"plugin_section":[],"plugin_tags":[529,602,1919,870,1178],"plugin_category":[38,54,58],"plugin_contributors":[241557],"plugin_business_model":[],"class_list":["post-333354","plugin","type-plugin","status-publish","hentry","plugin_tags-content","plugin_tags-login","plugin_tags-members","plugin_tags-private","plugin_tags-protection","plugin_category-authentication","plugin_category-security-and-spam-protection","plugin_category-user-management","plugin_contributors-domclic","plugin_committers-domclic"],"banners":{"banner":"https:\/\/ps.w.org\/effortless-login-protected-content\/assets\/banner-772x250.jpg?rev=3591395","banner_2x":"https:\/\/ps.w.org\/effortless-login-protected-content\/assets\/banner-1544x500.jpg?rev=3591395","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/effortless-login-protected-content\/assets\/icon-128x128.jpg?rev=3591395","icon_2x":"https:\/\/ps.w.org\/effortless-login-protected-content\/assets\/icon-256x256.jpg?rev=3591395","generated":false},"screenshots":[],"raw_content":"<!--section=description-->\n<p>EffortLess Login Protected Content is a simple yet powerful WordPress plugin that allows you to restrict access to specific pages and categories for logged-in users only.<\/p>\n\n<h4>Features<\/h4>\n\n<ul>\n<li><strong>Selective Protection<\/strong>: Choose which pages and categories to protect<\/li>\n<li><strong>Automatic Menu Hiding<\/strong>: Protected content is automatically hidden from menus for non-logged-in users<\/li>\n<li><strong>Smart Redirects<\/strong>: Unauthenticated users are redirected to the login page with return URL<\/li>\n<li><strong>Login\/Logout Menu Item<\/strong>: Automatically adds login\/logout link to your primary menu<\/li>\n<li><strong>Category Protection<\/strong>: Protect entire categories and all posts within them<\/li>\n<li><strong>Easy Configuration<\/strong>: Simple checkbox interface in WordPress admin<\/li>\n<li><strong>Lightweight<\/strong>: No bloat, minimal performance impact<\/li>\n<li><strong>Translation Ready<\/strong>: Fully internationalized and ready for translation<\/li>\n<\/ul>\n\n<h4>How It Works<\/h4>\n\n<ol>\n<li>Install and activate the plugin<\/li>\n<li>Go to Settings &gt; Login Protected Content<\/li>\n<li>Select the pages and\/or categories you want to protect<\/li>\n<li>Save your settings<\/li>\n<li>Non-logged-in users will be redirected to the login page when trying to access protected content<\/li>\n<\/ol>\n\n<h4>Use Cases<\/h4>\n\n<ul>\n<li>Member-only content areas<\/li>\n<li>Private documentation<\/li>\n<li>Exclusive resources for registered users<\/li>\n<li>Protected blog categories<\/li>\n<li>Client portals<\/li>\n<li>Course materials<\/li>\n<\/ul>\n\n<h3>Support<\/h3>\n\n<p>For support, feature requests, or bug reports, please visit the <a href=\"https:\/\/wordpress.org\/support\/plugin\/effortless-login-protected-content\/\">plugin support forum<\/a>.<\/p>\n\n<h3>Privacy Policy<\/h3>\n\n<p>This plugin does not collect, store, or transmit any user data. It only uses WordPress core functionality to check user login status and restrict content access.<\/p>\n\n<h3>Credits<\/h3>\n\n<p>Developed by domclic<\/p>\n\n<!--section=installation-->\n<h4>Automatic Installation<\/h4>\n\n<ol>\n<li>Log in to your WordPress admin panel<\/li>\n<li>Navigate to Plugins &gt; Add New<\/li>\n<li>Search for \"EffortLess Login Protected Content\"<\/li>\n<li>Click \"Install Now\" and then \"Activate\"<\/li>\n<\/ol>\n\n<h4>Manual Installation<\/h4>\n\n<ol>\n<li>Download the plugin zip file<\/li>\n<li>Log in to your WordPress admin panel<\/li>\n<li>Navigate to Plugins &gt; Add New &gt; Upload Plugin<\/li>\n<li>Choose the downloaded zip file and click \"Install Now\"<\/li>\n<li>Activate the plugin<\/li>\n<\/ol>\n\n<h4>Configuration<\/h4>\n\n<ol>\n<li>Navigate to Settings &gt; Login Protected Content<\/li>\n<li>Select the pages you want to protect<\/li>\n<li>Select the categories you want to protect<\/li>\n<li>Click \"Save Settings\"<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"who%20can%20access%20protected%20content%3F\"><h3>Who can access protected content?<\/h3><\/dt>\n<dd><p>Only logged-in users can access pages and categories you've marked as protected. All other visitors will be redirected to the login page.<\/p><\/dd>\n<dt id=\"what%20happens%20when%20someone%20tries%20to%20access%20protected%20content%3F\"><h3>What happens when someone tries to access protected content?<\/h3><\/dt>\n<dd><p>They are automatically redirected to the WordPress login page. After logging in, they'll be redirected back to the content they were trying to access.<\/p><\/dd>\n<dt id=\"does%20this%20hide%20protected%20pages%20from%20menus%3F\"><h3>Does this hide protected pages from menus?<\/h3><\/dt>\n<dd><p>Yes! Protected pages and categories are automatically hidden from navigation menus for non-logged-in users.<\/p><\/dd>\n<dt id=\"can%20i%20protect%20individual%20posts%3F\"><h3>Can I protect individual posts?<\/h3><\/dt>\n<dd><p>Currently, you can protect posts by protecting their category. All posts in a protected category are automatically protected.<\/p><\/dd>\n<dt id=\"does%20this%20work%20with%20custom%20post%20types%3F\"><h3>Does this work with custom post types?<\/h3><\/dt>\n<dd><p>The current version supports standard WordPress pages and posts\/categories. Support for custom post types may be added in future versions.<\/p><\/dd>\n<dt id=\"will%20this%20affect%20my%20site%27s%20seo%3F\"><h3>Will this affect my site's SEO?<\/h3><\/dt>\n<dd><p>Protected content will not be accessible to search engines unless they're logged in (which they typically aren't), so protected pages won't be indexed.<\/p><\/dd>\n<dt id=\"is%20this%20plugin%20compatible%20with%20caching%20plugins%3F\"><h3>Is this plugin compatible with caching plugins?<\/h3><\/dt>\n<dd><p>The plugin should work with most caching plugins, but you may need to exclude the login page from caching for best results.<\/p><\/dd>\n<dt id=\"can%20i%20customize%20the%20redirect%20url%3F\"><h3>Can I customize the redirect URL?<\/h3><\/dt>\n<dd><p>Currently, the plugin redirects to the WordPress login page. Custom redirect URLs may be added in a future version.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>2.0.8<\/h4>\n\n<ul>\n<li>Added: donate notice on the settings screen<\/li>\n<\/ul>\n\n<h4>2.0.7<\/h4>\n\n<ul>\n<li>Renamed all prefixes from effolopr_\/EFFOLOPR_ to ellpc_\/ELLPC_ to follow the EffortLess naming convention (el + lpc for Login Protected Content)<\/li>\n<\/ul>\n\n<h4>2.0.6<\/h4>\n\n<ul>\n<li>Renamed all prefixes to effolopr_\/EFFOLOPR_ to comply with WordPress.org unique prefix requirement (was lpc_\/ELLPC_)<\/li>\n<li>Updated admin page slug, settings group, section, and field IDs to use effolopr_ prefix<\/li>\n<\/ul>\n\n<h4>2.0.5<\/h4>\n\n<ul>\n<li>Added translations for Chinese (Taiwan), French, Spanish, German, and Italian<\/li>\n<\/ul>\n\n<h4>2.0.4<\/h4>\n\n<ul>\n<li>Fixed: init() was called outside class_exists guard, risking fatal or double hook registration on class name collision<\/li>\n<li>Fixed: get_pages()\/get_categories() returning false (via filter) caused fatal in PHP 8+ \u2014 now guarded with is_array()<\/li>\n<li>Fixed: main RSS feed leaked posts from protected categories to unauthenticated users<\/li>\n<li>Fixed: is_admin() returned true during front-end AJAX searches, bypassing category exclusion \u2014 replaced with is_admin() &amp;&amp; !wp_doing_ajax()<\/li>\n<\/ul>\n\n<h4>2.0.3<\/h4>\n\n<ul>\n<li>Fixed: posts in protected categories were visible in home, search, tag, and archive pages (added pre_get_posts exclusion)<\/li>\n<li>Fixed: potential fatal when get_queried_object() returns non-WP_Term on category archives (added instanceof guard)<\/li>\n<li>Fixed: post-type menu items in protected categories were not hidden from unauthenticated users<\/li>\n<li>Fixed: $args-&gt;theme_location accessed without isset() guard in add_login_logout_link()<\/li>\n<li>Fixed: missing class_exists() guard to prevent fatal on class name collision<\/li>\n<li>Refactored: merged duplicate render_pages_field\/render_categories_field into shared render_checkbox_field() helper<\/li>\n<\/ul>\n\n<h4>2.0.2<\/h4>\n\n<ul>\n<li>Added phpcs.xml to declare ELLPC_ prefix and fix PrefixAllGlobals PHPCS warning<\/li>\n<\/ul>\n\n<h4>2.0.1<\/h4>\n\n<ul>\n<li>Fixed PHPCS warning: renamed main class to ELPC_Login_Protected_Content to comply with WordPress prefix naming convention<\/li>\n<\/ul>\n\n<h4>2.0.0<\/h4>\n\n<ul>\n<li>Complete code refactoring for WordPress Coding Standards compliance<\/li>\n<li>Improved security with better escaping and sanitization<\/li>\n<li>Added translation support with text domain<\/li>\n<li>Better object-oriented structure with static class<\/li>\n<li>Enhanced admin interface with fieldsets<\/li>\n<li>Added success messages on settings save<\/li>\n<li>Improved code documentation<\/li>\n<li>Changed from wp_redirect to wp_safe_redirect for better security<\/li>\n<li>Added strict type comparisons<\/li>\n<li>Better default values handling<\/li>\n<\/ul>\n\n<h4>1.0<\/h4>\n\n<ul>\n<li>Initial release<\/li>\n<li>Basic page and category protection<\/li>\n<li>Menu item hiding<\/li>\n<li>Login\/logout menu link<\/li>\n<\/ul>","raw_excerpt":"Restrict selected pages and categories to logged-in users only. Automatically hides menu items and redirects unauthenticated users.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/ast.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/333354","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/ast.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/ast.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/ast.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=333354"}],"author":[{"embeddable":true,"href":"https:\/\/ast.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/domclic"}],"wp:attachment":[{"href":"https:\/\/ast.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=333354"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/ast.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=333354"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/ast.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=333354"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/ast.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=333354"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/ast.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=333354"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/ast.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=333354"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}