Skip to content

Entwickler-Schnittstellen

FG Sitemap WP stellt mehrere WordPress-Filter und Actions zur projektspezifischen Erweiterung bereit. Der aktuelle Code registriert keine eigenen REST-Endpunkte, AJAX-Handler oder WP-CLI-Kommandos.

Die Hauptdatei stellt einen Komfort-Accessor bereit:

$sitemap = fg_sitemap_wp();

Er liefert die Singleton-Instanz von FG_Sitemap_WP.

Der Code enthält mehrere öffentliche Methoden für die interne WordPress-Integration und den Admin-Bereich. Eine separate Stabilitäts- oder Semantic-Versioning-Zusage für diese PHP-Methoden ist im Projekt nicht definiert. Für Erweiterungen sind deshalb die benannten WordPress-Hooks die klarer ausgewiesenen Schnittstellen.

Typ: Filter

Zentraler URL-Ausschluss. Der Filter wird auch unmittelbar vor der XML-Ausgabe angewendet.

Parameter:

bool $excluded
string $url
string $context
int $object_id

Dokumentierte Kontexte aus dem Code:

home
post
post_type_archive
term
author
date_archive
extra
xml

Beispiel:

add_filter('fg_sitemap_wp_is_url_excluded', function (bool $excluded, string $url, string $context, int $object_id): bool {
if (str_contains($url, '/interner-bereich/')) {
return true;
}
return $excluded;
}, 10, 4);

Typ: Filter

Erlaubt einen zusätzlichen Ausschluss nach den eingebauten Post-Prüfungen.

Parameter:

bool $excluded
int $post_id

Beispiel:

add_filter('fg_sitemap_wp_is_post_excluded', function (bool $excluded, int $post_id): bool {
return $excluded || get_post_meta($post_id, '_exclude_from_fg_sitemap', true) === '1';
}, 10, 2);

Typ: Filter

Erlaubt einen zusätzlichen Ausschluss von Taxonomie-Begriffen.

Parameter:

bool $excluded
WP_Term $term

Typ: Filter

Ergänzt oder verändert die für einen Post erkannten Bild-URLs.

Parameter:

array $images
int $post_id
string $page_url

Beispiel:

add_filter('fg_sitemap_wp_post_images', function (array $images, int $post_id, string $page_url): array {
$custom = get_post_meta($post_id, '_custom_sitemap_image', true);
if (is_string($custom) && $custom !== '') {
$images[] = $custom;
}
return $images;
}, 10, 3);

Typ: Filter

Steuert die automatische ACF-Bildauswertung pro Post.

Parameter:

bool $include
int $post_id

Beispiel:

add_filter('fg_sitemap_wp_include_acf_images', function (bool $include, int $post_id): bool {
return $include;
}, 10, 2);

Typ: Filter

Verändert den ermittelten Canonical eines Posts vor dem Vergleich mit dem Permalink.

Parameter:

string $canonical
int $post_id
string $permalink

Beispiel:

add_filter('fg_sitemap_wp_post_canonical_url', function (string $canonical, int $post_id, string $permalink): string {
return $canonical;
}, 10, 3);

Typ: Filter

Verändert den ermittelten Canonical eines Taxonomie-Begriffs.

Parameter:

string $canonical
WP_Term $term
string $permalink

Typ: Filter

Verändert die WP_Query-Argumente einer Post-Type-Child-Sitemap.

Parameter:

array $args
string $post_type
int $page

Beispiel:

add_filter('fg_sitemap_wp_post_query_args', function (array $args, string $post_type, int $page): array {
return $args;
}, 10, 3);

Änderungen sollten die eingebauten Indexierbarkeitsgrenzen nicht unbeabsichtigt erweitern.

Typ: Filter

Ändert den Ziel-Endpoint für IndexNow.

Parameter:

string $endpoint

Beispiel:

add_filter('fg_sitemap_wp_indexnow_endpoint', function (string $endpoint): string {
return $endpoint;
});

Typ: Action

Wird nach einem IndexNow-Submit ausgelöst, sowohl bei HTTP-Antworten als auch bei WP_Error.

Parameter:

array $result
array $url_list

$result enthält:

[
'success' => bool,
'code' => int,
'count' => int,
'message' => string,
]

Beispiel:

add_action('fg_sitemap_wp_indexnow_submitted', function (array $result, array $url_list): void {
if (!$result['success']) {
error_log('FG Sitemap IndexNow: ' . $result['message']);
}
}, 10, 2);

Über die Singleton-Instanz sind unter anderem folgende Methoden öffentlich aufrufbar:

fg_sitemap_wp()->queue_indexnow_url('https://example.com/seite/');
fg_sitemap_wp()->submit_indexnow_urls(['https://example.com/seite/']);

queue_indexnow_url() akzeptiert nur URLs, die die internen Home-URL-Prüfungen bestehen. submit_indexnow_urls() sendet unmittelbar und aktualisiert den gespeicherten Status.

Der Code deklariert diese Methoden als public, enthält aber keine separate Zusage, dass sie als langfristig stabile externe API gepflegt werden.

Die öffentliche Methode kann aus projektspezifischem PHP aufgerufen werden:

fg_sitemap_wp()->clear_cache();

Einmaliger WP-Cron-Hook zur Verarbeitung der IndexNow-Queue.

Die Queue-Funktion plant den Hook nur, wenn noch kein entsprechendes Event vorgesehen ist.

Täglicher WP-Cron-Hook der aktiven FG-Core-Runtime. Dieser Hook gehört zur eingebetteten Shared Runtime und nicht zur Sitemap-Erzeugung selbst.

Die eingebettete FG-Core-Runtime stellt eigene, pluginübergreifende Schnittstellen bereit. Sie gehören nicht zur XML-Sitemap-Logik, sind aber im ausgelieferten Projekt vorhanden.

fg_core_parent_capability
fg_core_menu_icon
fg_core_menu_position
fg_core_status_reporting_enabled
fg_core_status_endpoint
fg_core_status_payload

fg_core_parent_capability steuert standardmäßig die Capability manage_options des gemeinsamen FUNCKGROUP-Menüs. fg_core_menu_icon und fg_core_menu_position beeinflussen dessen WordPress-Admin-Darstellung.

Die drei fg_core_status_*-Filter betreffen die technische Statusmeldung. Details zur übertragenen Information stehen unter Datenverarbeitung.

fg_core_loaded
fg_core_status_report_sent
fg_core_status_report_failed

fg_core_loaded wird nach Auswahl und Start der aktiven FG-Core-Runtime ausgelöst. Die beiden Status-Actions melden Erfolg bzw. Fehler eines Status-Requests.

Der Bootstrap stellt folgende Funktionen bereit, sofern sie noch nicht definiert sind:

fg_core_register_plugin(array $plugin): bool
fg_core(): ?\Funckgroup\FGCore\AdminCore

FG Sitemap selbst registriert seinen Admin-Bereich über fg_core_register_plugin().

FG Sitemap nutzt admin-post.php für:

fg_sitemap_wp_save_settings
fg_sitemap_wp_clear_cache
fg_sitemap_wp_indexnow_submit_home

Alle drei Handler prüfen manage_options und einen aktionsspezifischen Nonce.

Im aktuellen Projekt sind keine eigenen:

  • REST-Routen
  • wp_ajax_*-Actions
  • WP-CLI-Kommandos
  • JavaScript-Events

implementiert.

Die Hauptdatei definiert:

FG_SITEMAP_WP_VERSION
FG_SITEMAP_WP_FILE
FG_SITEMAP_WP_DIR
FG_SITEMAP_WP_URL

FG Core definiert nach Auswahl der aktiven Runtime zusätzlich:

FG_CORE_VERSION
FG_CORE_API_VERSION
FG_CORE_PROVIDER