Skip to content

Check a Pollora installation from the WordPress admin dashboard or the CLI, see discovered components and diagnose a project with pollora:doctor.

Pollora includes a built-in admin dashboard and an Artisan CLI command that give you a complete overview of your framework installation, discovered entities, and system health.

The dashboard is accessible in the WordPress admin under Tools > Pollora. It displays a branded overview of your project with the following cards:

CardDetails
EnvironmentPHP, Laravel, and WordPress versions
WordPress ConfigWP_DEBUG status, multisite, permalink structure
Post TypesDiscovered post types with labels, slugs, and class names
TaxonomiesDiscovered taxonomies with labels, slugs, and class names
HooksTotal count of discovered actions and filters
REST API RoutesClasses discovered via #[WpRestRoute]
WP-CLI CommandsClasses discovered via #[WpCli]
Scheduled TasksMethods discovered via #[Schedule]
Auto-discovered ProvidersService providers found by the discovery engine
ModulesLaravel modules status (enabled/disabled) via nwidart/laravel-modules
Discovery CacheCache driver and enabled status
Discovery PerformanceCache hits/misses, classes processed, instance pool size
Active ThemeTheme name, version, and template directory

When a newer stable version of Pollora is available on Packagist, a notification badge appears on the Tools > Pollora menu item, similar to WordPress’s Site Health counter. Dev versions (dev-develop, dev-main, etc.) are excluded from this check to avoid false positives.

The dashboard page requires the manage_options capability (administrators only).

The pollora:status Artisan command provides the same information in the terminal:

Terminal window
php artisan pollora:status

Example output:

Pollora v13.39.2 (latest: v13.39.2) ✓
PHP 8.4.12 | Laravel 13.36 | WordPress 7.1
WP_DEBUG: off | Multisite: no | Permalinks: /%postname%/
Post Types: 2 registered (via discovery)
· Projects [project] — App\Cms\PostTypes\Project
· Services [service] — App\Cms\PostTypes\Service
Taxonomies: 1 registered
· Project Categories [project-category] — App\Cms\Taxonomies\ProjectCategory
Hooks: 4 registered (2 actions, 2 filters)
REST API routes: 1 registered
· App\Cms\Rest\ProjectController
WP-CLI commands: 1 registered
· App\Cms\Cli\SeedCommand
Scheduled tasks: 2 registered
· App\Cms\Schedule\CacheCleanup::cleanExpiredTransients()
· App\Cms\Schedule\CacheCleanup::cleanRevisions()
Auto-discovered providers: 1
· App\Providers\AppServiceProvider
Modules: 0 total (0 enabled, 0 disabled)
Discovery cache: enabled (LaravelDiscoverCacheDriver)
Discovery stats: 3 cache hits, 0 misses, 24 classes
Theme: Starter Theme v1.0.0 (pollora-starter)

Use the --json flag for machine-readable output, useful for AI agents, CI pipelines, or monitoring tools:

Terminal window
php artisan pollora:status --json

This outputs the complete system information as a JSON object:

{
"framework": {
"current": "13.39.2",
"latest": "13.39.2",
"update_available": false,
"development": false
},
"environment": {
"php": "8.4.12",
"laravel": "13.35.0",
"wordpress": "7.1"
},
"wordpress": {
"debug": false,
"multisite": false,
"permalink_structure": "/%postname%/"
},
"discovery": {
"post_types": { "count": 2, "items": ["..."] },
"taxonomies": { "count": 1, "items": ["..."] },
"hooks": { "count": 4, "actions": 2, "filters": 2 },
"rest_routes": { "count": 1, "items": ["..."] },
"wp_cli_commands": { "count": 1, "items": ["..."] },
"schedules": { "count": 2, "items": ["..."] },
"service_providers": { "count": 1, "items": ["..."] }
},
"performance": { "..." },
"cache": { "driver": "LaravelDiscoverCacheDriver", "enabled": true },
"modules": { "count": 0, "enabled": 0, "disabled": 0, "items": [] },
"theme": { "name": "Starter Theme", "version": "1.0.0", "template": "pollora-starter" }
}

When running a dev branch (dev-develop, 13.x-dev, etc.), the command adapts its output:

Pollora dev-develop (latest stable: v13.39.2)

No misleading “update available” warning is shown for development installations: development is true in the JSON output, and Site Health reports a development build instead of comparing it with releases.

pollora:status says what is there. pollora:doctor says whether it works — and, under each problem, the command that fixes it:

Terminal window
php artisan pollora:doctor
✓ WordPress core patch — The core is patched, and __() is Pollora's.
✗ Composer patches lock — patches.lock.json is older than the framework's patches: Composer applies the old ones, or none.
johnpbloch/wordpress-core: Patch __ method in l10n to stop conflicting with Laravel
→ composer patches-relock && composer patches-repatch
! Theme pattern files — 1 pattern file(s) are never registered by WordPress.
patterns/masthead.html: WordPress reads only .php files in patterns/
→ Make each one a .php file whose header is a docblock with Title and Slug (/** Title: … Slug: my-theme/… */)
1 error(s), 1 warning(s).

It looks for failures that stay silent — the site renders, every command exits 0 — each one met in practice:

CheckWhat it catches
WordPress core patchthe core still declares __() (a patch Composer skipped), or __() is not Pollora’s
Composer patches lockpatches.lock.json missing, or older than the framework’s patches
Environment file.env names Pollora does not read (DB_NAME, DB_USER, WP_HOME…), MySQL settings on a sqlite connection
Application URLAPP_URL without a scheme (APP_URL=my-project.test)
Configuration and route cachesconfiguration or routes cached outside production: edits to .env or routes/ are ignored
Discovery cacheclasses added since the discovery cache was written, which are not registered — named, one by one
Theme, plugin and module buildsno theme; a build missing, or written to another folder than Pollora reads; a hot file pointing at a Vite dev server that is stopped or whose port is not exposed
Symlinked directoriesa theme, plugin or module linked under another name: the build and the site disagree on its folder
Template placeholders%theme_*% / %plugin_*% or .stub files left in a theme or plugin copied instead of generated
Theme pattern files.html files in patterns/ (WordPress reads only .php), patterns without a Title or Slug
Theme pattern cachepattern files missing from WordPress’s cached list
Routes over block templatesRoute::wp() routes answering in place of a block theme’s templates
Blocks in the legacy folderblocks still in resources/blocks, which stops loading in v15
Asynchronous actionsan ignored #[Async], an unavailable driver, WP-Cron events overdue or queued jobs waiting with nothing to run them — see Asynchronous Actions

The builds, directories, placeholders and blocks are checked for the active theme, every Pollora plugin and every enabled Laravel module.

--json prints the same for scripts. The command exits 1 when a check finds an error (warnings exit 0), so it can gate a deploy or a CI job.

The same checks appear in WordPress’s Tools › Site Health, with a Pollora badge, plus two only a web request can make: every block of the theme, the Pollora plugins and the modules is registered, and the web server’s document root is public/ (an error when /.env is served as a text file). Site Health runs in an administrator’s web request — the boot a visitor gets — which is where a block can be missing while WP-CLI sees it, and where the server shows what it exposes.

The SystemInfoCollector service is registered as a singleton and can be injected into your own code to access system information programmatically:

use Pollora\Dashboard\Domain\Services\SystemInfoCollector;
class MyController
{
public function __construct(
private readonly SystemInfoCollector $collector
) {}
public function health(): array
{
return $this->collector->collect();
}
}