=== NDT Maintenance === Contributors: nguyenduytan Tags: maintenance, coming soon, under construction, wordpress maintenance Requires at least: 5.0 Tested up to: 6.8 Stable tag: 1.0.1 Requires PHP: 7.0 License: GPLv2 or later License URI: https://www.gnu.org/licenses/gpl-2.0.html Plugin URI: https://nguyenduytan.com/1375-ndt-maintenance-wordpress-plugin/ Easily set up a customizable maintenance page for your WordPress site with countdown, progress bar, contact form, and social links. == Description == 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. Key features include: - Enable/disable maintenance mode with a toggle switch. - Multiple pre-designed themes (Default, Nova) to choose from. - Customizable title, heading, description, and footer. - Optional contact form with reCAPTCHA integration. - Countdown timer and progress bar to show site progress. - Custom logo, background image, and color options. - Exclude specific pages and posts from maintenance mode. - Social media links integration. - Google Analytics tracking support. - Custom CSS for advanced styling. Developed and maintained by Tony Nguyễn, this plugin is designed to provide a seamless maintenance experience and will be supported as long as necessary. == External Services == 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. **Google reCAPTCHA** - **Purpose**: Used to prevent spam submissions on the contact form displayed during maintenance mode. - **Data Sent**: When a user submits the contact form, the plugin sends the user's reCAPTCHA response token and IP address to Google's reCAPTCHA API (`https://www.google.com/recaptcha/api/siteverify`) for verification. - **When Data is Sent**: Data is sent only when the contact form is enabled and a user submits it. - **Terms of Service**: https://www.google.com/intl/en/policies/terms/ - **Privacy Policy**: https://www.google.com/intl/en/policies/privacy/ **Google Analytics** - **Purpose**: Optionally tracks user interactions on the maintenance mode page. - **Data Sent**: When enabled, the plugin loads the Google Analytics script (`https://www.googletagmanager.com/gtag/js`), which may collect data such as page views, user interactions, and device information as per Google's policies. - **When Data is Sent**: Data is sent only if a Google Analytics ID is configured in the plugin settings and the maintenance mode page is loaded. - **Terms of Service**: https://www.google.com/analytics/terms/ - **Privacy Policy**: https://www.google.com/intl/en/policies/privacy/ **Pinterest** - **Note**: 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. - **Terms of Service**: Not applicable. - **Privacy Policy**: Not applicable. == Installation == 1. Upload the `ndt-maintenance` folder to the `/wp-content/plugins/` directory. 2. Activate the plugin through the 'Plugins' menu in WordPress. 3. Go to **NDT Solutions > NDT Maintenance** in the admin dashboard to configure settings. == Frequently Asked Questions == = How do I enable maintenance mode? = Go to **NDT Solutions > NDT Maintenance**, toggle the "Enable Maintenance Mode" switch, and save changes. You can also toggle it directly from the WordPress admin bar. = Can I exclude specific pages or posts? = Yes, in the settings page, under "Advanced Settings," you can select pages and posts to exclude from maintenance mode. = How do I customize the maintenance page? = Go to **NDT Solutions > NDT Maintenance** to choose a theme, set a custom logo, background image, colors, and add features like a countdown timer, progress bar, or contact form. = Does the contact form support reCAPTCHA? = Yes, you can enable a contact form with reCAPTCHA integration. You’ll need to provide your reCAPTCHA Site Key and Secret Key in the settings. = Can I preview the maintenance page without enabling it? = 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. = How can I support the developer? = You can support the developer by donating via the PayPal.me link provided in the plugin's admin settings page under "About the Author". == Screenshots == 1. Settings page for configuring maintenance mode. 2. Default theme preview. 3. Nova theme preview. == Changelog == = 1.0.1 = * New: Safe "Preview" flow – 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. * New: Background image fallback – if no background is set, the theme falls back to /themes/default/assets/img/bg_default.jpg. * New: Stricter asset isolation – the maintenance template dequeues theme/other plugin assets and prints only this plugin’s CSS/JS to prevent theme elements from leaking into the maintenance page. * Update: Block WordPress Speculative Loading on the maintenance page to avoid extra head/footer output. * Update: Consistent versioning – all enqueued assets now use the plugin version constant for cache busting. * Update: Logo rendering keeps proper aspect ratio inside a square box sized by “Logo Width”. * Fix: Contact form init – ensure jQuery is printed before plugin scripts; form renders only when reCAPTCHA keys are provided. * Fix: Prevent plugin frontend assets from loading when maintenance mode is OFF. * Fix: 503 status header and no-cache headers for non-preview maintenance responses. * Security/Hardening: Nonce + capability checks for preview; sanitize/escape output on the maintenance template and admin. * Compatibility: Tested with WordPress 6.8; Requires PHP 7.0. = 1.0.0 = * Initial release for WordPress.org submission: - Standardized code to comply with WordPress.org guidelines. - Moved inline CSS/JS to separate files. - Added nonce and permission checks for security. - Improved settings page layout and toggle switch design. - Enhanced theme selection with preview images. - Added support for reCAPTCHA, countdown, progress bar, and social links. == Upgrade Notice == = 1.0.0 = 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. == Support == For support, please contact me via: - Email: admin@ndtan.net - Telegram: @nguyenduytan - Website: https://nguyenduytan.com