{"id":233535,"date":"2025-06-11T16:18:55","date_gmt":"2025-06-11T16:18:55","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/ndt-maintenance\/"},"modified":"2025-08-25T14:01:21","modified_gmt":"2025-08-25T14:01:21","slug":"ndt-maintenance","status":"publish","type":"plugin","link":"https:\/\/pcd.wordpress.org\/plugins\/ndt-maintenance\/","author":14046058,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_crdt_document":"","version":"1.0.1","stable_tag":"1.0.1","tested":"6.8.5","requires":"5.0","requires_php":"7.0","requires_plugins":null,"header_name":"NDT Maintenance","header_author":"Tony Nguy\u1ec5n","header_description":"A lightweight plugin to create a customizable maintenance page for your WordPress site with countdown, progress bar, contact form, and social links.","assets_banners_color":"bebebe","last_updated":"2025-08-25 14:01:21","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/nguyenduytan.com\/1375-ndt-maintenance-wordpress-plugin\/","header_author_uri":"https:\/\/nguyenduytan.com","rating":0,"author_block_rating":0,"active_installs":0,"downloads":355,"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":"nguyenduytan","date":"2025-06-11 16:18:39"},"1.0.1":{"tag":"1.0.1","author":"nguyenduytan","date":"2025-08-25 14:01:21"}},"upgrade_notice":{"1.0.0":"<p>This version standardizes the plugin for WordPress.org submission, improves security, and enhances the user interface. Please update to ensure compatibility and a better experience.<\/p>"},"ratings":[],"assets_icons":{"icon.svg":{"filename":"icon.svg","revision":3309937,"resolution":false,"location":"assets","locale":false}},"assets_banners":{"banner-772x250.jpg":{"filename":"banner-772x250.jpg","revision":3309937,"resolution":"772x250","location":"assets","locale":""}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.0.0","1.0.1"],"block_files":[],"assets_screenshots":{"screenshot-2.png":{"filename":"screenshot-2.png","revision":3349753,"resolution":"2","location":"plugin"},"screenshot-1.png":{"filename":"screenshot-1.png","revision":3349753,"resolution":"1","location":"plugin"}},"screenshots":{"1":"Settings page for configuring maintenance mode.","2":"Default theme preview.","3":"Nova theme preview."},"jetpack_post_was_ever_published":false},"plugin_section":[],"plugin_tags":[802,732,733,56926],"plugin_category":[52],"plugin_contributors":[240990],"plugin_business_model":[],"class_list":["post-233535","plugin","type-plugin","status-publish","hentry","plugin_tags-coming-soon","plugin_tags-maintenance","plugin_tags-under-construction","plugin_tags-wordpress-maintenance","plugin_category-performance","plugin_contributors-nguyenduytan","plugin_committers-nguyenduytan"],"banners":{"banner":"https:\/\/ps.w.org\/ndt-maintenance\/assets\/banner-772x250.jpg?rev=3309937","banner_2x":false,"banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":"https:\/\/ps.w.org\/ndt-maintenance\/assets\/icon.svg?rev=3309937","icon":"https:\/\/ps.w.org\/ndt-maintenance\/assets\/icon.svg?rev=3309937","icon_2x":false,"generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/ndt-maintenance\/trunk\/screenshot-1.png?rev=3349753","caption":"Settings page for configuring maintenance mode."},{"src":"https:\/\/ps.w.org\/ndt-maintenance\/trunk\/screenshot-2.png?rev=3349753","caption":"Default theme preview."}],"raw_content":"<!--section=description-->\n<p>NDT Maintenance is a lightweight plugin that helps you create a customizable maintenance page for your WordPress site. It allows you to display a professional \"Under Maintenance\" or \"Coming Soon\" page while your site is being worked on, with features like a countdown timer, progress bar, contact form, and social media links.<\/p>\n\n<p>Key features include:<\/p>\n\n<ul>\n<li>Enable\/disable maintenance mode with a toggle switch.<\/li>\n<li>Multiple pre-designed themes (Default, Nova) to choose from.<\/li>\n<li>Customizable title, heading, description, and footer.<\/li>\n<li>Optional contact form with reCAPTCHA integration.<\/li>\n<li>Countdown timer and progress bar to show site progress.<\/li>\n<li>Custom logo, background image, and color options.<\/li>\n<li>Exclude specific pages and posts from maintenance mode.<\/li>\n<li>Social media links integration.<\/li>\n<li>Google Analytics tracking support.<\/li>\n<li>Custom CSS for advanced styling.<\/li>\n<\/ul>\n\n<p>Developed and maintained by Tony Nguy\u1ec5n, this plugin is designed to provide a seamless maintenance experience and will be supported as long as necessary.<\/p>\n\n<h3>External Services<\/h3>\n\n<p>This plugin integrates with the following third-party services to provide functionality. Below is a detailed explanation of each service, including what data is sent, why, and links to their terms of service and privacy policies.<\/p>\n\n<p><strong>Google reCAPTCHA<\/strong>\n- <strong>Purpose<\/strong>: Used to prevent spam submissions on the contact form displayed during maintenance mode.\n- <strong>Data Sent<\/strong>: When a user submits the contact form, the plugin sends the user's reCAPTCHA response token and IP address to Google's reCAPTCHA API (<code>https:\/\/www.google.com\/recaptcha\/api\/siteverify<\/code>) for verification.\n- <strong>When Data is Sent<\/strong>: Data is sent only when the contact form is enabled and a user submits it.\n- <strong>Terms of Service<\/strong>: https:\/\/www.google.com\/intl\/en\/policies\/terms\/\n- <strong>Privacy Policy<\/strong>: https:\/\/www.google.com\/intl\/en\/policies\/privacy\/<\/p>\n\n<p><strong>Google Analytics<\/strong>\n- <strong>Purpose<\/strong>: Optionally tracks user interactions on the maintenance mode page.\n- <strong>Data Sent<\/strong>: When enabled, the plugin loads the Google Analytics script (<code>https:\/\/www.googletagmanager.com\/gtag\/js<\/code>), which may collect data such as page views, user interactions, and device information as per Google's policies.\n- <strong>When Data is Sent<\/strong>: Data is sent only if a Google Analytics ID is configured in the plugin settings and the maintenance mode page is loaded.\n- <strong>Terms of Service<\/strong>: https:\/\/www.google.com\/analytics\/terms\/\n- <strong>Privacy Policy<\/strong>: https:\/\/www.google.com\/intl\/en\/policies\/privacy\/<\/p>\n\n<p><strong>Pinterest<\/strong>\n- <strong>Note<\/strong>: The plugin includes a settings field for entering a Pinterest profile URL, which is displayed as a social media link on the maintenance page. No data is sent to Pinterest unless explicitly configured by the site administrator.\n- <strong>Terms of Service<\/strong>: Not applicable.\n- <strong>Privacy Policy<\/strong>: Not applicable.<\/p>\n\n<h3>Support<\/h3>\n\n<p>For support, please contact me via:\n- Email: admin@ndtan.net\n- Telegram: @nguyenduytan\n- Website: https:\/\/nguyenduytan.com<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Upload the <code>ndt-maintenance<\/code> folder to the <code>\/wp-content\/plugins\/<\/code> directory.<\/li>\n<li>Activate the plugin through the 'Plugins' menu in WordPress.<\/li>\n<li>Go to <strong>NDT Solutions &gt; NDT Maintenance<\/strong> in the admin dashboard to configure settings.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id='how%20do%20i%20enable%20maintenance%20mode%3F'><h3>How do I enable maintenance mode?<\/h3><\/dt>\n<dd><p>Go to <strong>NDT Solutions &gt; NDT Maintenance<\/strong>, toggle the \"Enable Maintenance Mode\" switch, and save changes. You can also toggle it directly from the WordPress admin bar.<\/p><\/dd>\n<dt id='can%20i%20exclude%20specific%20pages%20or%20posts%3F'><h3>Can I exclude specific pages or posts?<\/h3><\/dt>\n<dd><p>Yes, in the settings page, under \"Advanced Settings,\" you can select pages and posts to exclude from maintenance mode.<\/p><\/dd>\n<dt id='how%20do%20i%20customize%20the%20maintenance%20page%3F'><h3>How do I customize the maintenance page?<\/h3><\/dt>\n<dd><p>Go to <strong>NDT Solutions &gt; NDT Maintenance<\/strong> to choose a theme, set a custom logo, background image, colors, and add features like a countdown timer, progress bar, or contact form.<\/p><\/dd>\n<dt id='does%20the%20contact%20form%20support%20recaptcha%3F'><h3>Does the contact form support reCAPTCHA?<\/h3><\/dt>\n<dd><p>Yes, you can enable a contact form with reCAPTCHA integration. You\u2019ll need to provide your reCAPTCHA Site Key and Secret Key in the settings.<\/p><\/dd>\n<dt id='can%20i%20preview%20the%20maintenance%20page%20without%20enabling%20it%3F'><h3>Can I preview the maintenance page without enabling it?<\/h3><\/dt>\n<dd><p>Yes, when maintenance mode is enabled, a \"Preview\" button will appear in the settings page, allowing you to view the maintenance page without affecting visitors.<\/p><\/dd>\n<dt id='how%20can%20i%20support%20the%20developer%3F'><h3>How can I support the developer?<\/h3><\/dt>\n<dd><p>You can support the developer by donating via the PayPal.me link provided in the plugin's admin settings page under \"About the Author\".<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.0.1<\/h4>\n\n<ul>\n<li>New: Safe \"Preview\" flow \u2013 the preview button is always visible in the settings page and uses a nonce-protected URL so admins can preview changes even when maintenance mode is OFF.<\/li>\n<li>New: Background image fallback \u2013 if no background is set, the theme falls back to \/themes\/default\/assets\/img\/bg_default.jpg.<\/li>\n<li>New: Stricter asset isolation \u2013 the maintenance template dequeues theme\/other plugin assets and prints only this plugin\u2019s CSS\/JS to prevent theme elements from leaking into the maintenance page.<\/li>\n<li>Update: Block WordPress Speculative Loading on the maintenance page to avoid extra head\/footer output.<\/li>\n<li>Update: Consistent versioning \u2013 all enqueued assets now use the plugin version constant for cache busting.<\/li>\n<li>Update: Logo rendering keeps proper aspect ratio inside a square box sized by \u201cLogo Width\u201d.<\/li>\n<li>Fix: Contact form init \u2013 ensure jQuery is printed before plugin scripts; form renders only when reCAPTCHA keys are provided.<\/li>\n<li>Fix: Prevent plugin frontend assets from loading when maintenance mode is OFF.<\/li>\n<li>Fix: 503 status header and no-cache headers for non-preview maintenance responses.<\/li>\n<li>Security\/Hardening: Nonce + capability checks for preview; sanitize\/escape output on the maintenance template and admin.<\/li>\n<li>Compatibility: Tested with WordPress 6.8; Requires PHP 7.0.<\/li>\n<\/ul>\n\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>Initial release for WordPress.org submission:\n\n<ul>\n<li>Standardized code to comply with WordPress.org guidelines.<\/li>\n<li>Moved inline CSS\/JS to separate files.<\/li>\n<li>Added nonce and permission checks for security.<\/li>\n<li>Improved settings page layout and toggle switch design.<\/li>\n<li>Enhanced theme selection with preview images.<\/li>\n<li>Added support for reCAPTCHA, countdown, progress bar, and social links.<\/li>\n<\/ul><\/li>\n<\/ul>","raw_excerpt":"Easily set up a customizable maintenance page for your WordPress site with countdown, progress bar, contact form, and social links.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/pcd.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/233535","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/pcd.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/pcd.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/pcd.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=233535"}],"author":[{"embeddable":true,"href":"https:\/\/pcd.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/nguyenduytan"}],"wp:attachment":[{"href":"https:\/\/pcd.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=233535"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/pcd.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=233535"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/pcd.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=233535"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/pcd.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=233535"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/pcd.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=233535"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/pcd.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=233535"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}