You've already forked wp-prometheus
feat: Add dashboard extension hook for third-party plugins (v0.4.6)
All checks were successful
Create Release Package / build-release (push) Successful in 1m5s
All checks were successful
Create Release Package / build-release (push) Successful in 1m5s
Add wp_prometheus_register_dashboards action hook allowing third-party plugins to register their own Grafana dashboard templates. - DashboardProvider: registration system with file/JSON support - Security: path traversal protection, JSON validation - Admin UI: "Extension" badge and plugin attribution - Isolated mode support for dashboard registration hook Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
51
README.md
51
README.md
@@ -6,7 +6,13 @@ A WordPress plugin that provides a Prometheus-compatible `/metrics` endpoint wit
|
||||
|
||||
- Prometheus-compatible authenticated `/metrics` endpoint
|
||||
- Default WordPress metrics (users, posts, comments, plugins)
|
||||
- Runtime metrics (HTTP requests, database queries)
|
||||
- Cron job and transient cache metrics
|
||||
- WooCommerce integration (products, orders, revenue)
|
||||
- Custom metric builder with admin UI
|
||||
- Grafana dashboard templates with download
|
||||
- Extensible by other plugins using hooks
|
||||
- Dashboard extension hook for third-party Grafana dashboards
|
||||
- Settings page under Settings > Metrics
|
||||
- Bearer token authentication
|
||||
- License management integration
|
||||
@@ -154,6 +160,51 @@ $histogram = $collector->register_histogram( $name, $help, $labels, $buckets );
|
||||
$histogram->observe( $value, $labelValues );
|
||||
```
|
||||
|
||||
## Extending with Custom Dashboards (v0.4.6+)
|
||||
|
||||
Add your own Grafana dashboard templates using the `wp_prometheus_register_dashboards` action:
|
||||
|
||||
```php
|
||||
add_action( 'wp_prometheus_register_dashboards', function( $provider ) {
|
||||
// File-based dashboard
|
||||
$provider->register_dashboard( 'my-plugin-dashboard', array(
|
||||
'title' => __( 'My Plugin Metrics', 'my-plugin' ),
|
||||
'description' => __( 'Dashboard for my custom metrics', 'my-plugin' ),
|
||||
'icon' => 'dashicons-chart-bar',
|
||||
'file' => MY_PLUGIN_PATH . 'assets/dashboards/my-dashboard.json',
|
||||
'plugin' => 'My Plugin Name',
|
||||
) );
|
||||
|
||||
// OR inline JSON dashboard
|
||||
$provider->register_dashboard( 'dynamic-dashboard', array(
|
||||
'title' => __( 'Dynamic Dashboard', 'my-plugin' ),
|
||||
'description' => __( 'Dynamically generated dashboard', 'my-plugin' ),
|
||||
'icon' => 'dashicons-admin-generic',
|
||||
'json' => json_encode( $dashboard_array ),
|
||||
'plugin' => 'My Plugin Name',
|
||||
) );
|
||||
} );
|
||||
```
|
||||
|
||||
### Registration Parameters
|
||||
|
||||
| Parameter | Required | Description |
|
||||
| --------- | -------- | ----------- |
|
||||
| `title` | Yes | Dashboard title displayed in admin |
|
||||
| `description` | No | Description shown below the title |
|
||||
| `icon` | No | Dashicon class (default: `dashicons-chart-line`) |
|
||||
| `file` | Yes* | Absolute path to JSON file |
|
||||
| `json` | Yes* | Inline JSON content |
|
||||
| `plugin` | No | Plugin name for attribution |
|
||||
|
||||
*Either `file` or `json` is required, but not both.
|
||||
|
||||
### Security Notes
|
||||
|
||||
- File paths must be absolute and within `wp-content/`
|
||||
- Inline JSON is validated during registration
|
||||
- Third-party dashboards are marked with an "Extension" badge in the admin UI
|
||||
|
||||
## Development
|
||||
|
||||
### Build for Release
|
||||
|
||||
Reference in New Issue
Block a user