|
| 1 | +# Agent Workflow |
| 2 | + |
| 3 | +## Project Overview |
| 4 | + |
| 5 | +WP Maintenance Mode (LightStart) is a WordPress plugin by Themeisle that displays a maintenance mode, coming soon, or landing page to visitors. Text domain: `wp-maintenance-mode`. Option key: `wpmm_settings`. All constants prefixed with `WPMM_`. |
| 6 | + |
| 7 | +## Commands |
| 8 | + |
| 9 | +```bash |
| 10 | +# Install dependencies |
| 11 | +composer install |
| 12 | +npm install |
| 13 | + |
| 14 | +# Lint (PHP_CodeSniffer with WordPress coding standards) |
| 15 | +composer run lint |
| 16 | + |
| 17 | +# Auto-fix coding standards |
| 18 | +composer run format |
| 19 | + |
| 20 | +# Run PHPUnit tests |
| 21 | +./vendor/bin/phpunit |
| 22 | + |
| 23 | +# Run a single test file |
| 24 | +./vendor/bin/phpunit tests/generic-test.php |
| 25 | + |
| 26 | +# Build assets (minify JS + CSS via Grunt) |
| 27 | +npm run build # or: npx grunt |
| 28 | + |
| 29 | +# Watch for asset changes during development |
| 30 | +npx grunt watch |
| 31 | +``` |
| 32 | + |
| 33 | +## Architecture |
| 34 | + |
| 35 | +### Entry Point & Bootstrap |
| 36 | + |
| 37 | +`wp-maintenance-mode.php` — Main plugin file. Defines all `WPMM_*` constants (paths, URLs), requires function files, then loads the two core singleton classes via `plugins_loaded`. |
| 38 | + |
| 39 | +### Core Classes (`includes/classes/`) |
| 40 | + |
| 41 | +- **`WP_Maintenance_Mode`** — Frontend singleton. Handles maintenance mode display logic, page templates, redirect rules, multisite/network mode support, and shortcode registration. Loaded on every request. |
| 42 | +- **`WP_Maintenance_Mode_Admin`** — Admin singleton. Settings page, AJAX handlers (prefixed `wp_ajax_wpmm_*`), wizard flow, template management, subscriber export, and notices. Only loaded in `is_admin()` context. |
| 43 | +- **`WP_Maintenance_Mode_Shortcodes`** + `shortcodes/` — Shortcode registration (e.g., login form shortcode). |
| 44 | + |
| 45 | +### Functions (`includes/functions/`) |
| 46 | + |
| 47 | +- **`hooks.php`** — Plugin header filters and email content type hook. |
| 48 | +- **`helpers.php`** — Utility functions (e.g., `wpmm_get_option()`). |
| 49 | + |
| 50 | +### Views (`views/`) |
| 51 | + |
| 52 | +PHP template files for admin settings tabs (`settings.php`, `contact.php`, `google-analytics.php`), the frontend maintenance page (`maintenance.php`), wizard (`wizard.php`), network settings, notices, and sidebar. |
| 53 | + |
| 54 | +### Assets |
| 55 | + |
| 56 | +- `assets/js/` — Frontend (`scripts.js`) and admin (`scripts-admin.js`, `scripts-admin-global.js`) JavaScript, plus chatbot (`bot.js`, `bot.async.js`). Grunt minifies to `.min.js`. |
| 57 | +- `assets/css/` — Stylesheets minified via PostCSS/cssnano to `.min.css`. |
| 58 | +- `assets/templates/` — Block template JSON files organized by category: `coming-soon/`, `maintenance/`, `landing-page/`. |
| 59 | + |
| 60 | +### Settings Structure |
| 61 | + |
| 62 | +Plugin settings stored as serialized array in `wpmm_settings` option, with sections: `general` (status, network_mode), plus additional tabs managed by the admin class. Network/multisite settings stored in `wpmm_settings_network`. |
| 63 | + |
| 64 | +## Coding Standards |
| 65 | + |
| 66 | +- WordPress-Core standards enforced via PHPCS (`phpcs.xml`), with specific exclusions (no Yoda conditions required, loose comparison allowed, etc.) |
| 67 | +- i18n text domain: `wp-maintenance-mode` |
| 68 | +- PHP minimum: 7.0 (runtime set in PHPCS) |
| 69 | +- Assets use `.min.` suffix in production; controlled by `SCRIPT_DEBUG` constant |
0 commit comments