{"id":366575,"date":"2026-09-12T01:19:43","date_gmt":"2026-09-12T01:19:43","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/shyama-resource-gate\/"},"modified":"2026-09-12T01:19:47","modified_gmt":"2026-09-12T01:19:47","slug":"portal-entry-guard","status":"publish","type":"plugin","link":"https:\/\/tl.wordpress.org\/plugins\/portal-entry-guard\/","author":15194636,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.0.0","stable_tag":"1.0.0","tested":"7.1","requires":"6.2","requires_php":"8.1","requires_plugins":null,"header_name":"Portal Entry Guard","header_author":"Priyanka Behera","header_description":"Lightweight email-gated access for selected WordPress resource pages. No OTP or email verification is required.","assets_banners_color":"","last_updated":"2026-09-12 01:19:47","external_support_url":"","external_repository_url":"","donate_link":"","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":{"1.0.0":{"tag":"1.0.0","author":"priyankabehera155","date":"2026-09-12 01:19:47","revision":3692238}},"upgrade_notice":{"1.2.0":"<p>Initial stable release of Portal Entry Guard with configurable page protection and email-gated access.<\/p>"},"ratings":[],"assets_icons":[],"assets_banners":[],"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.0.0"],"block_files":[],"assets_screenshots":[],"screenshots":[]},"plugin_section":[],"plugin_tags":[18193,273005,280317,212949,280316],"plugin_category":[],"plugin_contributors":[278668,130278],"plugin_business_model":[],"class_list":["post-366575","plugin","type-plugin","status-publish","hentry","plugin_tags-content-protection","plugin_tags-email-access","plugin_tags-email-gate","plugin_tags-page-protection","plugin_tags-resource-gate","plugin_contributors-manoranjannayak08","plugin_contributors-priyankabehera155","plugin_committers-priyankabehera155"],"banners":[],"icons":{"svg":false,"icon":"https:\/\/s.w.org\/plugins\/geopattern-icon\/portal-entry-guard.svg","icon_2x":false,"generated":true},"screenshots":[],"raw_content":"<!--section=description-->\n<p>Portal Entry Guard allows you to protect selected WordPress pages with a lightweight email access gate.<\/p>\n\n<p>Visitors must enter a valid email address before accessing a protected page. No user account, OTP, or email verification is required.<\/p>\n\n<p>The plugin is designed to be simple, lightweight, and easy to configure.<\/p>\n\n<h3>Features<\/h3>\n\n<ul>\n<li>Protect selected WordPress pages.<\/li>\n<li>Select multiple pages from the plugin settings.<\/li>\n<li>Easily unselect pages to remove protection.<\/li>\n<li>Simple email-based access form.<\/li>\n<li>No OTP or email verification required.<\/li>\n<li>Configurable access duration from 1 to 365 days.<\/li>\n<li>Secure token-based visitor access.<\/li>\n<li>Nonce-protected form submission.<\/li>\n<li>Email addresses are stored for access tracking.<\/li>\n<li>Administrator users with the manage_options capability can bypass the gate.<\/li>\n<li>Responsive and lightweight frontend design.<\/li>\n<li>No page builder dependency.<\/li>\n<\/ul>\n\n<h3>Configuration<\/h3>\n\n<p>After activation, go to:<\/p>\n\n<pre><code>Settings &gt; Portal Entry Guard\n<\/code><\/pre>\n\n<h3>Protected Pages<\/h3>\n\n<p>Select the pages that should require email access.<\/p>\n\n<p>You can select multiple pages and unselect previously selected pages at any time.<\/p>\n\n<h3>Remember Visitor For<\/h3>\n\n<p>Set how many days a visitor should retain access to protected resources.<\/p>\n\n<p>The available range is 1 to 365 days.<\/p>\n\n<h3>Gate Title<\/h3>\n\n<p>Customize the title displayed on the access page.<\/p>\n\n<h3>Description<\/h3>\n\n<p>Customize the message displayed above the email form.<\/p>\n\n<h3>Privacy Text<\/h3>\n\n<p>Add a short privacy message explaining how the visitor's email address will be used.<\/p>\n\n<h3>How It Works<\/h3>\n\n<p>When a visitor opens a protected page:<\/p>\n\n<ol>\n<li>The plugin checks whether the page is protected.<\/li>\n<li>If the visitor does not have a valid access token, the email gate is displayed.<\/li>\n<li>The visitor enters their email address.<\/li>\n<li>The email address is validated.<\/li>\n<li>A secure access token is generated.<\/li>\n<li>The token is stored securely and associated with the protected page.<\/li>\n<li>The visitor receives access to the protected page.<\/li>\n<li>Access remains available until the configured expiration period.<\/li>\n<\/ol>\n\n<h3>Security<\/h3>\n\n<p>Portal Entry Guard uses:<\/p>\n\n<ul>\n<li>WordPress nonces for form validation.<\/li>\n<li>Sanitized email input.<\/li>\n<li>Secure random token generation.<\/li>\n<li>SHA-256 token hashes in the database.<\/li>\n<li>HTTP-only cookies.<\/li>\n<li>SameSite cookie protection.<\/li>\n<li>Expiration timestamps for access tokens.<\/li>\n<li>Capability checks for administrator bypass.<\/li>\n<\/ul>\n\n<h3>Privacy<\/h3>\n\n<p>The plugin stores email addresses submitted through the access form along with access-token information.<\/p>\n\n<p>Site administrators are responsible for configuring their privacy policy and ensuring that the plugin's use complies with applicable privacy and data-protection requirements.<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Upload the <code>portal-entry-guard<\/code> folder to the <code>\/wp-content\/plugins\/<\/code> directory.<\/li>\n<li>Activate the plugin through the <code>Plugins<\/code> screen in WordPress.<\/li>\n<li>Go to <code>Settings &gt; Portal Entry Guard<\/code>.<\/li>\n<li>Select the pages you want to protect.<\/li>\n<li>Configure the access duration and gate text.<\/li>\n<li>Click <code>Save Settings<\/code>.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"does%20the%20plugin%20send%20an%20otp%3F\"><h3>Does the plugin send an OTP?<\/h3><\/dt>\n<dd><p>No. The plugin does not send OTPs or require email verification.<\/p><\/dd>\n<dt id=\"does%20the%20visitor%20need%20a%20wordpress%20account%3F\"><h3>Does the visitor need a WordPress account?<\/h3><\/dt>\n<dd><p>No. Visitors only need to provide a valid email address.<\/p><\/dd>\n<dt id=\"can%20i%20protect%20multiple%20pages%3F\"><h3>Can I protect multiple pages?<\/h3><\/dt>\n<dd><p>Yes. Multiple pages can be selected from the plugin settings.<\/p><\/dd>\n<dt id=\"can%20i%20remove%20protection%20from%20a%20page%3F\"><h3>Can I remove protection from a page?<\/h3><\/dt>\n<dd><p>Yes. Uncheck the page in the Protected Pages list and save the settings.<\/p><\/dd>\n<dt id=\"how%20long%20does%20visitor%20access%20remain%20active%3F\"><h3>How long does visitor access remain active?<\/h3><\/dt>\n<dd><p>The administrator can configure the access duration from 1 to 365 days.<\/p><\/dd>\n<dt id=\"can%20administrators%20access%20protected%20pages%20without%20entering%20an%20email%3F\"><h3>Can administrators access protected pages without entering an email?<\/h3><\/dt>\n<dd><p>Yes. Users with the <code>manage_options<\/code> capability can bypass the email gate.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.2.0<\/h4>\n\n<ul>\n<li>Added configurable protected pages.<\/li>\n<li>Added the ability to unselect protected pages.<\/li>\n<li>Added configurable access duration.<\/li>\n<li>Added customizable gate title, description, and privacy text.<\/li>\n<li>Added secure token-based access.<\/li>\n<li>Added responsive frontend gate design.<\/li>\n<li>Added nonce verification.<\/li>\n<li>Added administrator bypass.<\/li>\n<\/ul>","raw_excerpt":"Protect resources with an email gate. Visitors enter their email to gain access, and a secure token stored in a cookie remembers their access.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/tl.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/366575","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/tl.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/tl.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/tl.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=366575"}],"author":[{"embeddable":true,"href":"https:\/\/tl.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/priyankabehera155"}],"wp:attachment":[{"href":"https:\/\/tl.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=366575"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/tl.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=366575"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/tl.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=366575"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/tl.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=366575"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/tl.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=366575"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/tl.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=366575"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}