{"id":344456,"date":"2026-07-24T16:25:18","date_gmt":"2026-07-24T16:25:18","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/codifigata-content-login-gate\/"},"modified":"2026-07-24T16:24:56","modified_gmt":"2026-07-24T16:24:56","slug":"codifigata-content-login-gate","status":"publish","type":"plugin","link":"https:\/\/wordpress.org\/plugins\/codifigata-content-login-gate\/","author":20925477,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.3.0","stable_tag":"1.3.0","tested":"7.0.2","requires":"5.8","requires_php":"7.4","requires_plugins":null,"header_name":"Codifigata - Content Login Gate","header_author":"Codifigata","header_description":"Gates the entire content (meta box) or a specific area (shortcode [cdfg_login_gate]...[\/cdfg_login_gate]) behind a login, with a blurred overlay or full content removal, and a customizable login button.","assets_banners_color":"7f7f94","last_updated":"2026-07-24 16:24:56","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"","header_author_uri":"","rating":0,"author_block_rating":0,"active_installs":0,"downloads":25,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.3.0":{"tag":"1.3.0","author":"codifigata","date":"2026-07-24 16:24:56"}},"upgrade_notice":{"1.3.0":"<p>The shortcode changed from <code>[login_gate]<\/code> to <code>[cdfg_login_gate]<\/code>; update any content using the old tag.<\/p>","1.2.0":"<p>Adds the &quot;hide content&quot; mode (more secure than blur) and a Settings page to customize button colors and label without writing code.<\/p>"},"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3621601,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3621601,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3621601,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3621601,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.3.0"],"block_files":[],"assets_screenshots":[],"screenshots":{"1":"\"Restricted access\" meta box in the editor sidebar.","2":"Settings page: display mode, colors, and button label.","3":"Blurred content with overlay and login button (\"blur\" mode).","4":"Login button with no underlying content (\"hide\" mode).","5":"Partial area gated with the <code>[cdfg_login_gate]<\/code> shortcode."}},"plugin_section":[],"plugin_tags":[18193,602,1932,17051,80],"plugin_category":[38,43,58],"plugin_contributors":[273199],"plugin_business_model":[],"class_list":["post-344456","plugin","type-plugin","status-publish","hentry","plugin_tags-content-protection","plugin_tags-login","plugin_tags-membership","plugin_tags-restrict-content","plugin_tags-shortcode","plugin_category-authentication","plugin_category-customization","plugin_category-user-management","plugin_contributors-codifigata","plugin_committers-codifigata"],"banners":{"banner":"https:\/\/ps.w.org\/codifigata-content-login-gate\/assets\/banner-772x250.png?rev=3621601","banner_2x":"https:\/\/ps.w.org\/codifigata-content-login-gate\/assets\/banner-1544x500.png?rev=3621601","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/codifigata-content-login-gate\/assets\/icon-128x128.png?rev=3621601","icon_2x":"https:\/\/ps.w.org\/codifigata-content-login-gate\/assets\/icon-256x256.png?rev=3621601","generated":false},"screenshots":[],"raw_content":"<!--section=description-->\n<p>Codifigata - Content Login Gate lets you restrict the entire content of a post\/page, or just part of it (for example download buttons), to logged-in users, showing a login button to logged-out visitors in place of the restricted content.<\/p>\n\n<p><strong>Two usage modes<\/strong><\/p>\n\n<ol>\n<li><strong>Gate the entire content<\/strong> \u2014 enable it with a simple checkbox in the \"Restricted access\" meta box, shown in the editor sidebar for posts and pages.<\/li>\n<li><strong>Gate a specific area<\/strong> \u2014 using the <code>[cdfg_login_gate]...[\/cdfg_login_gate]<\/code> shortcode, which can be added in the Gutenberg \"Shortcode\" block. Useful for hiding only one section of the content (e.g. download buttons) while keeping the rest of the post visible.<\/li>\n<\/ol>\n\n<p><strong>Two display modes (Settings \u2192 Content Login Gate)<\/strong><\/p>\n\n<ul>\n<li><strong>Blur the content<\/strong> \u2014 the content stays in the page but is visually blurred via CSS, with an overlay and a login button. Effective as a preview\/registration nudge, but it is not real protection: anyone who views the page source can still read the content.<\/li>\n<li><strong>Hide the content<\/strong> \u2014 the restricted content is not included in the HTML sent to logged-out users: only the login button appears on the page. Recommended for genuinely sensitive content (download links, private information, etc.).<\/li>\n<\/ul>\n\n<p><strong>Features<\/strong><\/p>\n\n<ul>\n<li>Works right after activation, with sensible defaults.<\/li>\n<li>Settings page with a color picker to customize the button's background color, text color, and label, without writing code.<\/li>\n<li>CSS is only loaded on pages where the gate is actually active (no impact on pages without restricted content).<\/li>\n<li>Customizable login page URL, with automatic redirect back to the original content after login.<\/li>\n<li>Supported post types customizable via a PHP filter.<\/li>\n<li><code>min_height<\/code> and <code>label<\/code> shortcode attributes to customize each individual restricted area.<\/li>\n<\/ul>\n\n<p><strong>Developer filters<\/strong><\/p>\n\n<pre><code>cdfg_login_url (string $login_url, string $redirect)\n<\/code><\/pre>\n\n<p>Filters the base URL of the login page. Default: <code>home_url( '\/login\/' )<\/code>.<\/p>\n\n<pre><code>cdfg_button_label (string $label)\n<\/code><\/pre>\n\n<p>Filters the default label of the login button.<\/p>\n\n<pre><code>cdfg_post_types (array $post_types)\n<\/code><\/pre>\n\n<p>Filters the list of post types on which the \"Restricted access\" meta box is shown. Default: <code>array( 'post', 'page' )<\/code>.<\/p>\n\n<p>Example:<\/p>\n\n<pre><code>add_filter( 'cdfg_login_url', function( $url, $redirect ) {\n    return home_url( '\/sign-in\/' );\n}, 10, 2 );\n\nadd_filter( 'cdfg_post_types', function( $post_types ) {\n    $post_types[] = 'product';\n    return $post_types;\n} );\n<\/code><\/pre>\n\n<!--section=installation-->\n<ol>\n<li>Upload the plugin folder to <code>\/wp-content\/plugins\/<\/code>, or install it from the WordPress \"Plugins\" screen.<\/li>\n<li>Activate the plugin from the WordPress \"Plugins\" menu.<\/li>\n<li>(Optional) Go to Settings \u2192 Content Login Gate to choose the display mode (blur\/hide) and customize the button's colors and label.<\/li>\n<li>(Optional) Create a custom login page and set its URL with the <code>cdfg_login_url<\/code> filter; otherwise the plugin defaults to <code>\/login\/<\/code>.<\/li>\n<li>To gate the entire content: open a post or page, enable the \"Require login to view the content\" checkbox in the \"Restricted access\" meta box, and save.<\/li>\n<li>To gate just one area: in the block editor, add a \"Shortcode\" block with <code>[cdfg_login_gate]...[\/cdfg_login_gate]<\/code> around the content you want to restrict.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"does%20the%20plugin%20work%20with%20any%20theme%3F\"><h3>Does the plugin work with any theme?<\/h3><\/dt>\n<dd><p>Yes. The gate is applied through the <code>the_content<\/code> filter and through the shortcode, so it works with any theme that uses standard WordPress functions to output content.<\/p><\/dd>\n<dt id=\"can%20i%20use%20the%20shortcode%20on%20post%20types%20other%20than%20posts%20and%20pages%3F\"><h3>Can I use the shortcode on post types other than posts and pages?<\/h3><\/dt>\n<dd><p>Yes, the <code>[cdfg_login_gate]<\/code> shortcode works anywhere <code>do_shortcode()<\/code> is executed (content, widgets that support shortcodes, etc.). The \"entire content\" meta box, however, is limited to the post types filterable with <code>cdfg_post_types<\/code>.<\/p><\/dd>\n<dt id=\"how%20do%20i%20customize%20the%20button%20label%20for%20just%20one%20area%3F\"><h3>How do I customize the button label for just one area?<\/h3><\/dt>\n<dd><p>Add the <code>label<\/code> attribute to the shortcode, for example: <code>[cdfg_login_gate label=\"Unlock download\"]...[\/cdfg_login_gate]<\/code>.<\/p><\/dd>\n<dt id=\"what%20is%20the%20security%20difference%20between%20%22blur%22%20and%20%22hide%22%3F\"><h3>What is the security difference between \"blur\" and \"hide\"?<\/h3><\/dt>\n<dd><p>With \"blur the content\", the restricted content is still present in the page's HTML and is only visually hidden via CSS: anyone who views the page source, disables CSS, or makes a direct request to the page can still read it. It is meant as a preview\/registration nudge, not as protection. With \"hide the content\", the restricted content is not included in the HTML generated for logged-out users: only the button markup is sent instead. Use this second mode for genuinely sensitive content.<\/p><\/dd>\n<dt id=\"is%20the%20restricted%20content%20exposed%20in%20rss%20feeds%3F\"><h3>Is the restricted content exposed in RSS feeds?<\/h3><\/dt>\n<dd><p>No, regardless of the selected mode. In feeds, where the CSS overlay is not available, the plugin always replaces the restricted content with a short text notice and a link to the login page.<\/p><\/dd>\n<dt id=\"what%20happens%20to%20the%20plugin%27s%20data%20on%20uninstall%3F\"><h3>What happens to the plugin's data on uninstall?<\/h3><\/dt>\n<dd><p>On uninstall (not on simple deactivation), the plugin removes the post meta that marks restricted content and the settings option (mode, colors, button label). No database tables are created.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.3.0<\/h4>\n\n<ul>\n<li>Renamed the <code>[login_gate]<\/code> shortcode to <code>[cdfg_login_gate]<\/code> to avoid collisions with other plugins\/themes.<\/li>\n<li>Removed bundled translation files; translations are now handled entirely through translate.wordpress.org.<\/li>\n<li>Hardened shortcode output sanitization while preserving support for core Gutenberg blocks (Embed, Search, Social Icons, etc.).<\/li>\n<\/ul>\n\n<h4>1.2.0<\/h4>\n\n<ul>\n<li>Added the Settings page (Settings \u2192 Content Login Gate) with a color picker for background color, text color, and default button label.<\/li>\n<li>Added the \"hide the content\" display mode: restricted content can now be fully excluded from the HTML sent to logged-out users, instead of only being blurred via CSS.<\/li>\n<\/ul>\n\n<h4>1.1.0<\/h4>\n\n<ul>\n<li>First version published on WordPress.org.<\/li>\n<li>Gate the entire content via meta box, and a partial gate via the <code>[cdfg_login_gate]<\/code> shortcode.<\/li>\n<li>Developer filters: <code>cdfg_login_url<\/code>, <code>cdfg_button_label<\/code>, <code>cdfg_post_types<\/code>.<\/li>\n<li>Gate CSS loaded only when needed; dedicated handling for RSS feeds.<\/li>\n<\/ul>","raw_excerpt":"Hide the entire content or just one section behind a login, with blur or full removal, and a customizable login button.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/344456","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=344456"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/codifigata"}],"wp:attachment":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=344456"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=344456"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=344456"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=344456"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=344456"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=344456"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}