Neo Dashboard Core
Neo Dashboard Core für WordPress
★ 0stars
3release downloads
0forks
Install
The author publishes release zips, so WP-CLI can install straight from GitHub:
wp plugin install https://github.com/neo-consult/neo-dashboard/releases/download/v3.74.0/neo-dashboard.zipReadme
# Neo Dashboard Core
Version: 3.74.0
Requires PHP: 8.1+
License: GPL-2.0-or-later
Ein zentrales Dashboard-Framework, das WordPress-Plugins nahtlos in eine einheitliche Benutzeroberfläche integriert. Entwickler können eigene Sidebar-Gruppen, Sections, Widgets und Notifications per Hook-API registrieren.
✨ Neue Features (3.0.3)
- 🔗 WP-Admin Integration: Link zu Neo Dashboard im WordPress Admin-Menü
- 📊 Neo Umfrage: Vollständige Statistik-Seite mit Feld-Analyse
- 🎨 Icon Buttons: Moderne Icon-basierte Aktionsbuttons
- 📱 Responsive Design: Optimiert für alle Bildschirmgrößen
- 🌓 Dark Theme Support: Vollständige Unterstützung für dunkle Themes
- 🔧 Domain Changer: Neues Plugin für einfache Domain-Verwaltung
📦 Installation
- Upload
Kopiere den Ordnerneo-dashboard-corein dein Verzeichniswp-content/plugins/. - Aktivieren
Aktiviere das Plugin im WordPress‑Admin unter Plugins. - Seite anlegen
Bei der ersten Aktivierung wird automatisch eine Seite mit dem Slugneo-dashboarderstellt und das Blank-Template zugewiesen. - Permalinks
(Nur bei URL-Problemen) Gehe zu Einstellungen > Permalinks und klicke auf „Änderungen speichern“, um Rewrite-Rules zu flushen.
🚀 Schnellstart
- Im Browser aufrufen:
https://deine-domain.de/neo-dashboard/ - Hooks nutzen:
Registriere in deinem Plugin unteradd_action('neo_dashboard_init', ...)eigene Komponenten.
use NeoDashboard\Core\Extension\Definition\NavigationItemDefinition;
use NeoDashboard\Core\Extension\Definition\SectionDefinition;
add_action('neo_dashboard_init', function() {
// Sidebar-Gruppe
do_action('neo_dashboard_register_sidebar_item', NavigationItemDefinition::fromArray([
'slug' => 'my-plugin',
'label_callback' => static fn(): string => 'My Plugin',
'icon' => 'bi-puzzle',
'url' => '/neo-dashboard/my-plugin',
'position' => 20,
'is_group' => true,
]));
// Section unter Gruppe
do_action('neo_dashboard_register_sidebar_item', NavigationItemDefinition::fromArray([
'slug' => 'my-plugin-settings',
'label_callback' => static fn(): string => 'Einstellungen',
'icon' => 'bi-gear',
'url' => '/neo-dashboard/my-plugin-settings',
'position' => 21,
'parent' => 'my-plugin',
]));
// Section im Content-Bereich
do_action('neo_dashboard_register_section', SectionDefinition::fromArray([
'slug' => 'my-plugin-settings',
'label_callback' => static fn(): string => 'Einstellungen',
'callback' => static function (): void {
require plugin_dir_path(__FILE__) . 'templates/settings.php';
},
]));
});
🔌 Architektur & Extensibility
- PSR‑4 Autoloader lädt alle Klassen im Namespace
NeoDashboard\Core. - Bootstrap: Schlanke Lebenszyklus-Fassade für Aktivierung und Deaktivierung. Laufzeitstart, Sprache, Dokumenttitel, Admin-Menü und WordPress-Ausgabebereinigung liegen in getrennten Adaptern.
- Dashboard-Laufzeit:
DashboardRuntimePipelinesteuert die explizite Startreihenfolge.DashboardManagerContainererzeugt und verbindet die Manager nicht mehr selbst, sondern erhält sie vonDashboardRuntimeCompositionRoot; derHookBuskapselt WordPress-Hooks. - Registries: Getrennte Registries verwalten Navigation, Sections, Widgets
und Notifications.
DashboardRegistriesbündelt ihre Instanzen pro Runtime und wird vom Composition Root explizit an alle Verbraucher übergeben; ein globaler Registry-Singleton existiert nicht mehr. - Manager-Klassen: SidebarManager, SectionManager, WidgetManager, NotificationManager, AssetManager.
- Assets:
AssetCatalogverwaltet Plugin- und Seiten-Assets sowie deren Kontextindex.CoreAssetManifestbeschreibt die lokalen Core-Dateien;CoreAssetEnqueuer,PluginAssetEnqueuerundDashboardAssetPrinterkapseln Enqueueing, JavaScript-Lokalisierung und Standalone-Ausgabe.CoreAssetPlatformundDashboardClientEnvironmenttrennen WordPress- Enqueueing, Dateiprüfung, URLs, Nonces und Übersetzungen von der testbaren Asset-Orchestrierung und dem Aufbau der Client-Konfiguration. Auch Plugin-Assets laufen überPluginAssetPlatform; vorhandene Lokalisierungsdaten werden generisch nach Script-Handle und Objektname erhalten, ohne plugin-spezifische Sonderfälle im Core.AssetManagerbleibt die kompatible WordPress-Hook-Fassade. - Sprachen:
LanguageCatalogverwaltet verfügbare und Plugin-spezifische Sprachen.PluginLanguageSelectorkapselt die Fallbackregel;LanguageManagerübernimmt nur WordPress-Hooks, Benutzer-Metadaten und AJAX. - Widget-AJAX:
WidgetRenderServicekapselt Auflösung, Zugriff, Cache und Rendering mit typisierten Ergebnissen. Provider, Zugriffsprüfung und Cache sind austauschbar. Der WordPress-unabhängigeWidgetAjaxControllerarbeitet ausschließlich mitWidgetAjaxRequestundWidgetAjaxResponder; konkrete WordPress-Adapter übernehmen globale Eingaben, Nonce-Prüfung und kompatible JSON-Antworten. Die Composition Root übergibt den Controller direkt an den Runtime-Initializer. - REST:
RestRouteCollectionhält typisierte Routendefinitionen;WordPressRestRouteRegistrar,WordPressRestPermissionCheckerundRestEndpointResponderkapseln Registrierung, Berechtigungen und einheitliche Erfolgs- beziehungsweise Fehlerantworten.RestManagerbleibt Fassade für die öffentliche Extension-API. - Notifications:
NotificationVisibilityFilterentscheidet unabhängig von WordPress über Ablauf, Rollen, Ausblendestatus und Priorität.WordPressNotificationUserStatekapselt Benutzer-Metadaten;NotificationServiceundNotificationRestControllerbilden Anwendungsfall und REST-Transport ab.NotificationManagerbleibt die Hook-Fassade. - Navigation und Sections:
NavigationTreeBuildererzeugt sortierte, hierarchische Sichtdaten einschließlich Labels und Tooltips an einer einzigen Stelle.SidebarManagerundSectionManagererhalten ihre Registries als Abhängigkeiten und bleiben schlanke WordPress-Hook-Fassaden. Section-Auflösung erfolgt direkt über den injiziertenSectionResolver; Registry-Ergebnisse sind cache-stabil. - Widget-Definitionen:
WidgetDefinitionLoaderkapselt den idempotenten Hook- und Ladezyklus;WidgetSortererzeugt die priorisierte Sicht.WidgetManagererhält Registry, Loader und Sortierer als Abhängigkeiten und beschränkt sich auf die kompatible Registrierungsfassade. - Zugriff und Seitentitel:
RoleAccessPolicyentscheidet unabhängig von WordPress über rollenbasierte Sichtbarkeit und wird von Content- und Widget- Zugriff als explizite Abhängigkeit aus der Composition Root gemeinsam verwendet.DashboardPageTitleBuilderkapselt Dashboard-, Section- und 404-Titel.WordPressDashboardPageTitleProviderübernimmt WordPress-Abfragen, Section-Auflösung und anfrageweites Caching;DashboardDocumentTitlenutzt ihn direkt. - Request-Zugriff:
WordPressAccessControllerregistriert die WordPress- Hooks für den injiziertenWordPressAccessEnforcer; öffentliche Plugins melden exakte und Präfix-Pfade typisiert überneo_dashboard_register_public_routesan. - Servergrenzen: Der Core verändert keine
.htaccess-Datei und führt kein eigenes Login- oder IP-Protokoll. Direkter Dateizugriff wird durch die vorhandenenABSPATH-Guards und die Serverkonfiguration begrenzt. - Benutzermenü:
UserMenuFormatterkapselt Unicode-sichere Initialen und Rollenbezeichnungen.UserRoleResolverbestimmt Rollen mit expliziter Priorität und versorgt Benutzermenü sowie Access-Denied-Ansicht.WordPressUserMenuRenderererzeugt Avatar, Login-/ Logout-URLs und Markup einmal pro Rendering; beide Menütemplates erhalten das fertige Markup vomDashboardRenderer. - Widget-Komponenten:
WidgetComponentRendererrendert ausschließlich bekannte Komponenten-Templates und bereinigt Output-Buffer auch bei Fehlern.WidgetValueColorPolicykapselt KPI-Farbschwellen und Fachplugins erzeugen oder erhalten den zustandsarmen Renderer als normale Objektabhängigkeit; ein globaler Renderer-Kontext ist nicht erforderlich. - Request- und Section-Auflösung:
CurrentRequestTypeProviderübernimmt den typisierten Request-Kontext einschließlichADMIN. Der Provider wird pro Anfrage zwischengespeichert und vom Composition Root gemeinsam an Runtime-Initializer und Router übergeben. Interne Dienste erhalten den Provider explizit; punktuelle statische Logger- und Template-Grenzen erzeugen den zustandsarmen Provider lokal. - Presentation:
DashboardViewModelFactoryerstellt zugriffsgefilterte Sichtdaten;DashboardResponseHandlersetzt den HTTP-Status undDashboardRendererrendert das Layout. - DashboardRouter: WordPress-Adapter für URL-Registrierung, Template-Auswahl und Body-Klassen steuert. Das Blank-Template besitzt das vollständige HTML-Dokument; ein Output-Buffer oder Regex-Filtering wird nicht mehr verwendet.
- Templates: Blank-Template (
dashboard-blank.php) und Layout-Template (dashboard-layout.php) basierend auf Bootstrap 5.
ðŸ› ï¸ Hook-API Übersicht
| Hook | Parameter | Beschreibung |
|---|---|---|
neo_dashboard_init |
— | Wird nach Core-Setup gefeuert. |
neo_dashboard_register_sidebar_item |
NavigationItemDefinition $definition |
Registriert ein Sidebar-Item (inkl. Gruppen). |
neo_dashboard_register_section |
SectionDefinition $definition |
Registriert eine Section im Hauptbereich. |
neo_dashboard_register_widget |
WidgetDefinition $definition |
Registriert ein Widget im Dashboard. |
neo_dashboard_register_notification |
NotificationDefinition $definition |
Registriert eine Notification oben im Layout. |
neo_dashboard_register_public_routes |
PublicRouteRegistry $registry, RequestContext $context |
Registriert öffentliche Exakt- oder Präfix-Routen. |
neo_dashboard_enqueue_assets |
— | Fügt eigene CSS/JS nach Core-Assets ein. |
Registrierung erfolgt typisiert (Beispiel Sidebar-Item):
NavigationItemDefinition::fromArray([
'slug' => 'key',
'label_callback' => static fn(): string => 'Titel',
'icon' => 'bi-icon',
'url' => '/neo-dashboard/key',
'position' => 10,
'roles' => ['administrator'],
'parent' => 'group-slug',
'is_group' => false,
]);
📚 Beispiele
Sidebar-Gruppierung
use NeoDashboard\Core\Extension\Definition\NavigationItemDefinition;
add_action('neo_dashboard_init', function() {
// Gruppe definieren
do_action('neo_dashboard_register_sidebar_item', NavigationItemDefinition::fromArray([
'slug' => 'weather-plugin',
'label_callback' => static fn(): string => 'Wetter-Plugin',
'icon' => 'bi-cloud',
'url' => '/neo-dashboard/weather-plugin',
'position' => 10,
'is_group' => true,
]));
// Unterpunkte
foreach (['3days','7days'] as $type) {
do_action('neo_dashboard_register_sidebar_item', NavigationItemDefinition::fromArray([
'slug' => 'weather-'.$type,
'label_callback' => static fn(): string => ($type==='3days'?'3-Tage':'7-Tage').'-Wetter',
'icon' => 'bi-calendar',
'url' => '/neo-dashboard/weather-'.$type,
'position' => ($type==='3days'?11:12),
'parent' => 'weather-plugin',
]));
}
});
Wetter-Widget & Notification
use NeoDashboard\Core\Extension\Definition\NotificationDefinition;
use NeoDashboard\Core\Extension\Definition\WidgetDefinition;
add_action('neo_dashboard_init', function() {
// Aktuelles Wetter-Widget
do_action('neo_dashboard_register_widget', WidgetDefinition::fromArray([
'id' => 'current-weather',
'label' => 'Aktuelles Wetter',
'icon' => 'bi-thermometer-half',
'priority' => 5,
'callback' => function(){ /* Anzeige-Code */ },
]));
// Unwetter-Warnung
if ( $will_storm ) {
do_action('neo_dashboard_register_notification', NotificationDefinition::fromArray([
'id' => 'storm-alert',
'message' => '<strong>⚠️ Gewitter erwartet!</strong>',
'priority' => 1,
'dismissible' => true,
]));
}
});
🔔 Toast Notifications (Plugins)
NeoDash.toast('info', 'Kurze Info');
NeoDash.toastSuccess('Erfolg gespeichert!');
NeoDash.toastError('Fehler beim Speichern');
NeoDash.toastWarning('Achtung: prüfen Sie die Eingaben');
NeoDash.toastInfo('Hinweis für den Nutzer');
Optionen:
NeoDash.toast('info', 'Nachricht', {
duration: 8000, // ms (0 = dauerhaft)
title: 'Hinweis', // optionaler Titel
autohide: true
});
Globale Defaults (optional):
window.NeoDash = window.NeoDash || {};
window.NeoDash.toastDefaults = {
duration: 5000,
containerClass: 'position-fixed top-0 end-0 p-3',
containerZIndex: 9999
};
A11y‑Hinweis:
Erfolg/Info verwenden role="status" + aria-live="polite", Fehler/Warnung role="alert" + aria-live="assertive".
Read the full README on GitHub →
Releases
| Tag | Published | Asset | Downloads |
|---|---|---|---|
| v3.74.0 | Sep 4, 2026 | neo-dashboard.zip | 3 |