Network Incident Manager
Network incident manager
Install
No release zip yet. The repository archive installs, but the folder name will carry the branch suffix and updates will not flow:
wp plugin install https://github.com/norico/network-incident-manager/archive/refs/heads/main.zipStudio Code: WordPress Studio Code powered by Claude claude-sonnet-4-5 (Anthropic)
Documentation en français : lisezmoi.txt
Network incident manager with a dedicated database table, hierarchical applications, a public status page, and a REST API.
Description
Network Incident Manager lets you declare, track and publish network incidents without using WordPress posts.
Incidents are stored in a dedicated wp_incidents table and displayed on a public /incidents/ page.
Key Features
- Dedicated table — incidents stored in
wp_incidents, notwp_posts - Incident lifecycle — Scheduled → In Progress → Resolved, with auto-transition at the configured start date
- Application management — hierarchical
wp_incident_appstable; associate incidents with applications - Public status page —
/incidents/shows active, scheduled, and recently resolved incidents - Template override — themes can override any template part (see Templates section)
- Inline status update — change incident status directly from the admin list (AJAX)
- REST API — read and write incidents via
/wp-json/network-incidents/v1/ - Multisite-ready — REST API endpoint can be queried across subsites
- i18n — fully internationalised; French (fr_FR) translation included
Statuses
- Scheduled — incident declared for a future date; auto-transitions to In Progress at
start_at - In Progress — ongoing incident
- Resolved — incident closed
Auto-transition
When an incident's start_at datetime is reached, its status automatically changes from Scheduled to In Progress.
The check runs:
- On every visit to the
/incidents/frontend page - Every hour via WP-Cron (
nim_cron_transition)
REST API
GET /wp-json/network-incidents/v1/list— public; supports?status=,?severity=,?app_id=,?per_page=,?page=,?orderby=,?order=; returnsX-WP-Total/X-WP-TotalPagesheadersPOST /wp-json/network-incidents/v1/incidents— create (requiresedit_posts)PUT|PATCH /wp-json/network-incidents/v1/incidents/{id}— partial or full update (requiresedit_posts); returns 404 if the incident does not existDELETE /wp-json/network-incidents/v1/incidents/{id}— delete (requiresdelete_posts); returns 204 on success
Templates
Default templates live in templates/. To override in your theme, create the file at the matching path:
page-incidents.php→{theme}/page-incidents.phptemplates/parts/incident-active.php→{theme}/nim/incident-active.phptemplates/parts/incident-scheduled.php→{theme}/nim/incident-scheduled.phptemplates/parts/incident-resolved.php→{theme}/nim/incident-resolved.php
Default CSS (assets/css/frontend.css) is only loaded when no theme template override is found.
Shortcode
Use [nim_incidents] in any post or page to embed the full status view inline. Optional attribute: resolved_limit (default 5).
Installation
- Upload the
network-incident-managerfolder towp-content/plugins/ - Activate the plugin through Plugins → Installed Plugins
- Go to Incidents → Applications to create your application list
- Go to Incidents → Declare an Incident to log your first incident
- Visit
yoursite.com/incidents/to see the public status page
If the /incidents/ URL returns a 404, go to Settings → Permalinks and click Save Changes to flush rewrite rules.
Frequently Asked Questions
The /incidents/ page returns 404
Go to Settings → Permalinks and click Save Changes to regenerate the rewrite rules.
How do I style the incidents page?
Create page-incidents.php in your active theme root. The plugin's default CSS will not be loaded and your theme controls the layout entirely.
Can I override just one template part?
Yes. Create nim/incident-active.php (or incident-scheduled.php, incident-resolved.php) in your theme. Parts not overridden fall back to the plugin defaults.
Is it compatible with Multisite?
Yes. The REST API endpoint GET /network-incidents/v1/list can be queried from any subsite or external application.
Does it work with SQLite (WordPress Studio)?
Yes. ON UPDATE CURRENT_TIMESTAMP is avoided; timestamps are managed manually. FULLTEXT indexes are not used.
Screenshots
- Incident list in admin with inline status dropdown
- Add / Edit incident form with start date picker
- Applications management page
- Public /incidents/ page — active, scheduled, and resolved sections
Changelog
See changelog.txt for the full version history.
Upgrade Notice
2.5.3
Adds a native Gutenberg block nim/incidents with live server-side preview, section selector, and item limit control. The block stylesheet is shared with the frontend so the editor preview matches the public render exactly. Also extends the [nim_incidents] shortcode with section= and limit= attributes, and fixes the shortcode breaking the host page design when page-incidents.php was included inside ob_start().
2.5.2
Patch release: fixes Fatal Error on PHP 8.2+ — DateTime::getLastErrors() now returns false instead of an empty array when there are no errors; parse_start_at() now guards against this before calling array_sum(). Bumps minimum PHP requirement to 8.2. Also fixes admin notices positioning (wp-header-end marker added on all admin pages) and adds auto_transition() call on admin_init so scheduled incidents transition correctly from the admin.
2.5.1
Patch release: fixes CSS structure of the scheduled incident template (date was displayed inline after the title), restores missing description display, and removes undefined $td variable warnings in template parts.
2.5.0
New resolved_at column added to wp_incidents — migration runs automatically on plugin load. Scheduled incidents now render with the correct CSS style. New: REST DELETE route, [nim_incidents] shortcode, ?orderby= / ?order= params on the list endpoint.
2.4.0
Major internal refactoring to OOP. No database schema changes — upgrade is safe and automatic. Requires PHP 8.1+. If you have a theme that calls nim_get_template_part() directly, the function is still available via a backward-compat shim.
2.2.0
New start_at column added to wp_incidents. The upgrade runs automatically on plugin load. "Open" renamed to "Scheduled"; "Maintenance" status removed — update any existing data manually if needed.
2.0.0
Breaking change: incidents moved from wp_posts to wp_incidents. Existing CPT posts are not migrated automatically.