Entwickler-Schnittstellen
FG Core stellt eine kleine PHP-API zur Registrierung von FUNCKGROUP-Plugins sowie mehrere WordPress-Actions und -Filter bereit.
Globale PHP-Funktionen
Section titled “Globale PHP-Funktionen”fg_core_register_plugin()
Section titled “fg_core_register_plugin()”Registriert ein Plugin bei der aktiven Runtime oder speichert die Registrierung bis zum Core-Start zwischen.
fg_core_register_plugin(array $plugin): boolRückgabe:
Bei leerem Slug gibt die Funktion false zurück. Vor dem Core-Start wird eine Registrierung mit nicht leerem Slug zunächst zwischengespeichert und mit true bestätigt; die vollständige Validierung erfolgt beim Booten. Nach dem Core-Start wird direkt an AdminCore::register_plugin() weitergeleitet, sodass eine ungültige Callback-/Tab-Definition unmittelbar false liefern kann.
Minimalbeispiel für eine einzelne Seite:
$registered = fg_core_register_plugin([ 'slug' => 'my-plugin', 'title' => 'My Plugin', 'menu_title' => 'My Plugin', 'capability' => 'manage_options', 'callback' => [$this, 'render_page'], 'version' => MY_PLUGIN_VERSION, 'plugin_file' => MY_PLUGIN_FILE,]);fg_core()
Section titled “fg_core()”Liefert die aktive AdminCore-Instanz oder null, solange die Runtime noch nicht geladen ist.
fg_core(): ?\Funckgroup\FGCore\AdminCoreBeispiel:
$core = fg_core();
if ($core !== null && $core->is_registered('my-plugin')) { // Plugin ist bei der aktiven Runtime registriert.}Registrierungsstruktur
Section titled “Registrierungsstruktur”Plugin-Felder
Section titled “Plugin-Felder”| Feld | Typ | Standard | Hinweise |
|---|---|---|---|
slug |
string | erforderlich | wird mit sanitize_key() normalisiert |
title |
string | Slug | Seitentitel |
menu_title |
string | Slug | Untermenü-Titel |
description |
string | leer | optionale Beschreibung |
capability |
string | manage_options |
Zugriff auf Plugin-Seite |
callback |
callable definition | null |
erforderlich, wenn keine Tabs vorhanden sind |
tabs |
array | [] |
tabbasierte Bereiche |
default_tab |
string | leer | fällt auf ersten gültigen Tab zurück |
position |
int | 50 |
Sortierung im FUNCKGROUP-Menü |
version |
string | leer | Anzeige und Statusdaten |
plugin_file |
string | leer | Hauptdatei, wichtig für die Zuordnung im Statusreport |
Tab-Felder
Section titled “Tab-Felder”| Feld | Typ | Standard | Hinweise |
|---|---|---|---|
| Slug | Array-Schlüssel oder slug |
erforderlich | wird mit sanitize_key() normalisiert |
title |
string | Slug | Tab-Beschriftung |
callback |
callable definition | erforderlich | wird beim Rendern mit $plugin, $tab_slug aufgerufen |
capability |
string | leer | leer bedeutet Plugin-Capability |
position |
int | 50 |
Sortierung der Tabs |
FG Core akzeptiert als Callback-Definition eine Closure, einen nicht leeren String oder ein Zwei-Elemente-Array mit Objekt/Klassenname und Methodennamen. Die tatsächliche Aufrufbarkeit wird erst beim Rendern geprüft.
Öffentliche Methoden von AdminCore
Section titled “Öffentliche Methoden von AdminCore”Für Integrationen relevant sind:
\Funckgroup\FGCore\AdminCore::get_instance(): AdminCore$core->register_plugin(array $plugin): bool$core->get_plugins(): array$core->is_registered(string $slug): bool$core->get_runtime(): arrayZusätzlich existiert der rückwärtskompatible statische Alias:
\Funckgroup\FGCore\AdminCore::register_page(array $plugin): boolÜber class_alias() steht bei freien Klassennamen außerdem FG_Admin_Core als Alias für Funckgroup\FGCore\AdminCore zur Verfügung.
Runtime-Konstanten
Section titled “Runtime-Konstanten”Nach Auswahl des aktiven Kandidaten definiert der Bootstrap:
| Konstante | Inhalt |
|---|---|
FG_CORE_VERSION |
aktive Core-Version |
FG_CORE_API_VERSION |
aktive API-Version |
FG_CORE_PROVIDER |
Name des Plugins, das die ausgewählte Core-Kopie bereitstellt |
Actions
Section titled “Actions”fg_core_loaded
Section titled “fg_core_loaded”Typ: Action
Wird nach erfolgreichem Booten der aktiven Runtime ausgelöst.
Parameter:
$core // Funckgroup\FGCore\AdminCore$runtime // array<string,mixed>Beispiel:
add_action('fg_core_loaded', function ($core, array $runtime): void { if (!$core->is_registered('my-plugin')) { return; }
$version = $runtime['version'] ?? '';});fg_core_status_report_sent
Section titled “fg_core_status_report_sent”Typ: Action
Wird nach einer erfolgreichen 2xx-Antwort des Status-Endpunkts ausgelöst.
Parameter:
$payload // array<string,mixed>$response // Antwort der WordPress HTTP APIBeispiel:
add_action('fg_core_status_report_sent', function (array $payload, $response): void { $plugin_count = count($payload['plugins'] ?? []);});fg_core_status_report_failed
Section titled “fg_core_status_report_failed”Typ: Action
Wird ausgelöst, nachdem ein Fehlertext und der HTTP-Statuscode gespeichert wurden.
Parameter:
$message // string$http_code // intBeispiel:
add_action('fg_core_status_report_failed', function (string $message, int $http_code): void { // Eigene Diagnose kann hier angebunden werden.}, 10, 2);Filter
Section titled “Filter”fg_core_parent_capability
Section titled “fg_core_parent_capability”Typ: Filter
Standard: manage_options
Steuert die Capability für das FUNCKGROUP-Hauptmenü und dessen Übersichtsseite.
add_filter('fg_core_parent_capability', static function (): string { return 'manage_options';});fg_core_menu_icon
Section titled “fg_core_menu_icon”Typ: Filter
Standard: dashicons-admin-generic
add_filter('fg_core_menu_icon', static function (): string { return 'dashicons-admin-tools';});fg_core_menu_position
Section titled “fg_core_menu_position”Typ: Filter
Standard: 58
add_filter('fg_core_menu_position', static function (): int { return 58;});fg_core_status_payload
Section titled “fg_core_status_payload”Typ: Filter
Erhält den vollständig aufgebauten Status-Payload unmittelbar vor der JSON-Serialisierung.
add_filter('fg_core_status_payload', static function (array $payload): array { $payload['custom_marker'] = 'example'; return $payload;});Änderungen an diesem Filter verändern die an den Status-Endpunkt übertragenen Daten.
fg_core_status_reporting_enabled
Section titled “fg_core_status_reporting_enabled”Typ: Filter
Standard: true, sofern FG_CORE_STATUS_REPORTING nicht ausdrücklich false ist.
add_filter('fg_core_status_reporting_enabled', '__return_false');fg_core_status_endpoint
Section titled “fg_core_status_endpoint”Typ: Filter
Erhält den durch die Standard-URL oder FG_CORE_STATUS_ENDPOINT bestimmten Endpunkt.
add_filter('fg_core_status_endpoint', static function (string $endpoint): string { return 'https://example.com/wp-json/status/v1/report';});Cron-Hook
Section titled “Cron-Hook”Die Statusmeldung verwendet intern den Action-Hook:
fg_core_send_installation_statusDieser Hook wird als tägliches WP-Cron-Ereignis geplant und ruft StatusReporter::send_status() auf.
REST API, AJAX, CLI und JavaScript
Section titled “REST API, AJAX, CLI und JavaScript”FG Core 1.1.3 registriert:
- keine eigenen REST-Routen
- keine eigenen WordPress-AJAX-Actions
- keine WP-CLI-Kommandos
- keine JavaScript-Events
Das Sync-Skript tools/sync-fg-core.php ist ein eigenständiges Entwicklungswerkzeug und wird außerhalb der WordPress-Laufzeit verwendet.