{"id":296039,"date":"2026-04-08T13:16:44","date_gmt":"2026-04-08T13:16:44","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/ajax-hidden-content-block\/"},"modified":"2026-04-08T13:16:29","modified_gmt":"2026-04-08T13:16:29","slug":"jzb-secure-content-block","status":"publish","type":"plugin","link":"https:\/\/he.wordpress.org\/plugins\/jzb-secure-content-block\/","author":18013013,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_crdt_document":"","version":"1.0.0","stable_tag":"1.0.0","tested":"6.9.4","requires":"5.8","requires_php":"7.0","requires_plugins":null,"header_name":"JZB Secure Content Block","header_author":"Yephy","header_description":"Provides a hidden content block with AJAX password verification and local memory, compatible with static caching environments.","assets_banners_color":"c3e8d2","last_updated":"2026-04-08 13:16:29","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"","header_author_uri":"https:\/\/www.wpjzb.com","rating":0,"author_block_rating":0,"active_installs":0,"downloads":30,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.0.0":{"tag":"1.0.0","author":"yephy","date":"2026-04-08 13:16:29"}},"upgrade_notice":[],"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3501702,"resolution":"128x128","location":"assets","locale":""},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3501702,"resolution":"256x256","location":"assets","locale":""}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3501702,"resolution":"1544x500","location":"assets","locale":""},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3501702,"resolution":"772x250","location":"assets","locale":""}},"assets_blueprints":{},"all_blocks":{"jscb\/secure-content-block":{"name":"jscb\/secure-content-block","title":"JZB Secure Block"},"jscb\/prompt":{"name":"jscb\/prompt","title":"Prompt Area"},"jscb\/hidden":{"name":"jscb\/hidden","title":"Hidden Content"}},"tagged_versions":["1.0.0"],"block_files":[],"assets_screenshots":[],"screenshots":{"1":"The Global Settings Panel in WordPress dashboard.","2":"How the Parent-Child block looks inside the Gutenberg editor.","3":"The frontend password prompt on a live site."},"jetpack_post_was_ever_published":false},"plugin_section":[],"plugin_tags":[1220,259725,28068,30794],"plugin_category":[],"plugin_contributors":[259726],"plugin_business_model":[],"class_list":["post-296039","plugin","type-plugin","status-publish","hentry","plugin_tags-block","plugin_tags-cache-compatible","plugin_tags-hidden-content","plugin_tags-password-protect","plugin_contributors-yephy","plugin_committers-yephy"],"banners":{"banner":"https:\/\/ps.w.org\/jzb-secure-content-block\/assets\/banner-772x250.png?rev=3501702","banner_2x":"https:\/\/ps.w.org\/jzb-secure-content-block\/assets\/banner-1544x500.png?rev=3501702","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/jzb-secure-content-block\/assets\/icon-128x128.png?rev=3501702","icon_2x":"https:\/\/ps.w.org\/jzb-secure-content-block\/assets\/icon-256x256.png?rev=3501702","generated":false},"screenshots":[],"raw_content":"<!--section=description-->\n<p>\"JZB Secure Content Block\" is a solution to protect your premium content, exclusive code snippets, or download links.<\/p>\n\n<p>It aims to work efficiently alongside page caching (like Cloudflare, WP Rocket, or LiteSpeed Cache) by loading an empty shell upfront and fetching the actual secure content asynchronously via an AJAX POST request only when the correct password is provided.<\/p>\n\n<h3>Key Features:<\/h3>\n\n<ul>\n<li><strong>Cache Compatible<\/strong>: Bypasses frontend HTML caching environments.<\/li>\n<li><strong>Gutenberg Native<\/strong>: Uses the modern Parent-Child block architecture. You can drag and drop any block inside the hidden area.<\/li>\n<li><strong>Smart Local Memory<\/strong>: Remembers unlocked state via <code>localStorage<\/code> so your users don't have to re-enter passwords when refreshing.<\/li>\n<li><strong>Global &amp; Local Passwords<\/strong>: Set a global default password to save time, or override it on specific posts.<\/li>\n<li><strong>UI Customizer<\/strong>: Customize colors, borders, and button styles in the settings panel.<\/li>\n<\/ul>\n\n<!--section=installation-->\n<ol>\n<li>Upload the plugin folder to the <code>\/wp-content\/plugins\/<\/code> directory.<\/li>\n<li>Activate the plugin through the 'Plugins' screen in WordPress.<\/li>\n<li>Navigate to <code>Settings -&gt; Secure Content Block<\/code> to configure your global password and custom UI colors.<\/li>\n<li>Go to any Post or Page, click the <code>+<\/code> icon, and search for the \"JZB Secure Block\" block.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"does%20it%20work%20with%20cloudflare%20and%20litespeed%20cache%3F\"><h3>Does it work with Cloudflare and LiteSpeed Cache?<\/h3><\/dt>\n<dd><p>Yes. Because the verification uses a live AJAX call to <code>admin-ajax.php<\/code> (which is excluded from caching by default), your frontend can be aggressively cached while the content protection remains dynamic.<\/p><\/dd>\n<dt id=\"will%20search%20engines%20index%20the%20hidden%20content%3F\"><h3>Will search engines index the hidden content?<\/h3><\/dt>\n<dd><p>No. Since the content is only loaded dynamically after a correct password submission, search engine crawlers will only see the \"Please enter password\" form.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>Initial public release.<\/li>\n<\/ul>","raw_excerpt":"A Gutenberg block to securely hide content using passwords. Designed to be fully compatible with page caching mechanisms.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/he.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/296039","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/he.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/he.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/he.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=296039"}],"author":[{"embeddable":true,"href":"https:\/\/he.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/yephy"}],"wp:attachment":[{"href":"https:\/\/he.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=296039"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/he.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=296039"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/he.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=296039"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/he.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=296039"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/he.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=296039"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/he.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=296039"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}