Skip to content

Entwickler-Schnittstellen

FG Core stellt eine kleine PHP-API zur Registrierung von FUNCKGROUP-Plugins sowie mehrere WordPress-Actions und -Filter bereit.

Registriert ein Plugin bei der aktiven Runtime oder speichert die Registrierung bis zum Core-Start zwischen.

fg_core_register_plugin(array $plugin): bool

Rü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,
]);

Liefert die aktive AdminCore-Instanz oder null, solange die Runtime noch nicht geladen ist.

fg_core(): ?\Funckgroup\FGCore\AdminCore

Beispiel:

$core = fg_core();
if ($core !== null && $core->is_registered('my-plugin')) {
// Plugin ist bei der aktiven Runtime registriert.
}
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
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.

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(): array

Zusä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.

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

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'] ?? '';
});

Typ: Action

Wird nach einer erfolgreichen 2xx-Antwort des Status-Endpunkts ausgelöst.

Parameter:

$payload // array<string,mixed>
$response // Antwort der WordPress HTTP API

Beispiel:

add_action('fg_core_status_report_sent', function (array $payload, $response): void {
$plugin_count = count($payload['plugins'] ?? []);
});

Typ: Action

Wird ausgelöst, nachdem ein Fehlertext und der HTTP-Statuscode gespeichert wurden.

Parameter:

$message // string
$http_code // int

Beispiel:

add_action('fg_core_status_report_failed', function (string $message, int $http_code): void {
// Eigene Diagnose kann hier angebunden werden.
}, 10, 2);

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';
});

Typ: Filter

Standard: dashicons-admin-generic

add_filter('fg_core_menu_icon', static function (): string {
return 'dashicons-admin-tools';
});

Typ: Filter

Standard: 58

add_filter('fg_core_menu_position', static function (): int {
return 58;
});

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.

Typ: Filter

Standard: true, sofern FG_CORE_STATUS_REPORTING nicht ausdrücklich false ist.

add_filter('fg_core_status_reporting_enabled', '__return_false');

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';
});

Die Statusmeldung verwendet intern den Action-Hook:

fg_core_send_installation_status

Dieser Hook wird als tägliches WP-Cron-Ereignis geplant und ruft StatusReporter::send_status() auf.

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.