Hook-Referenz

Der Multisite Language Switcher stellt eine ganze Reihe von WordPress-Actions und -Filtern bereit, mit denen sich sein Verhalten anpassen lässt, ohne den Quellcode zu ändern. Nahezu jeder Hook-Name trägt das Präfix msls_.

Wenn Sie mit Actions und Filtern noch nicht gearbeitet haben, lesen Sie am besten zuerst die Plugin-API im WordPress-Handbuch. Diese Seite listet alle Erweiterungspunkte des Plugins, gruppiert nach Subsystem. Die angegebenen Signaturen entsprechen dem Stand von Version 3.0.1; maßgeblich bleibt die Aufrufstelle im Quellcode.

Ein Hinweis zur Reihenfolge: Die Funktionen und Klassen des Plugins stehen bereits zur Verfügung, wenn die Plugin-Datei eingebunden wird, also vor plugins_loaded. Die Hooks dagegen feuern erst ab plugins_loaded und später. Registrieren Sie Ihre Callbacks also wie gewohnt.

Ausgabe im Frontend

msls_get_output

apply_filters( 'msls_get_output', ?object $obj ): ?object

Ersetzt das Output-Objekt, das msls_the_switcher() und msls_get_switcher() verwenden. Standardmäßig wird null übergeben, und die Funktion greift auf Output::create() zurück. Geben Sie ein eigenes Objekt zurück, mit demselben Vertrag aus set_tags() und __toString(), um die Ausgabe komplett selbst zu erzeugen, für die gesamte Website oder pro Template.

msls_output_get

apply_filters( 'msls_output_get', string $url, LinkInterface $link, bool $is_current_blog ): string

Erzeugt das Markup für jedes einzelne Sprachelement, bevor es in das Ausgabe-Array wandert. Der Filter erhält die Ziel-URL (nicht das fertige Anker-Element), das Link-Objekt und die Information, ob das Element auf den aktuellen Blog zeigt. Der Rückgabewert muss also das vollständige HTML dieses Elements sein. Hängt kein Callback an diesem Hook, erzeugt das Plugin sein eigenes Anker-Element.

Das Link-Objekt trägt seine Werte in den magischen Eigenschaften txt (Beschreibung des Blogs), src (URL des Flaggen-Icons) und alt (Locale); (string) $link liefert die fertige Darstellung gemäß der eingestellten Variante.

msls_output_get_tags

apply_filters( 'msls_output_get_tags', array $tags ): array

Filtert die umschließenden Tags before_output, after_output, before_item und after_item. Diese Werte kommen normalerweise aus den Plugin-Einstellungen; über den Filter überschreiben Sie sie programmatisch, etwa um in bestimmten Templates ein anderes Listen-Markup zu erzwingen.

msls_output_no_translation_found

apply_filters( 'msls_output_no_translation_found', string $empty ): string

Filtert den leeren String, den Output::__toString() zurückgibt, wenn es nichts auszugeben gibt: keine Übersetzung gefunden und die Option „aktuelle Sprache anzeigen“ ist aus. Damit können Sie an dieser Stelle einen Hinweis ausgeben statt eines leeren Umschalters.

msls_output_get_alternate_links

apply_filters( 'msls_output_get_alternate_links', string $url, Blog $blog ): string

Filtert die URL jedes Eintrags, den das Plugin als <link rel="alternate" hreflang="…"> im <head> ausgibt. Ein leerer Rückgabewert entfernt die Sprache aus der Liste; alternativ schreiben Sie die URL in die kanonische Form um, die Ihr SEO-Setup erwartet.

msls_output_get_alternate_links_default

apply_filters( 'msls_output_get_alternate_links_default', string $default ): string

Filtert den x-default-Eintrag, der zurückgegeben wird, wenn nur eine einzige alternative URL vorliegt. Nutzen Sie ihn, um diesen Standardeintrag zu unterdrücken, zu ersetzen oder umzuschreiben.

msls_output_get_alternate_links_arr

apply_filters( 'msls_output_get_alternate_links_arr', array $arr ): array

Filtert das vollständige Array der <link rel="alternate">-Zeilen, bevor sie zusammengefügt und ausgegeben werden. Damit sortieren Sie Sprachen um, entfernen Einträge oder schieben eigene <link>-Tags dazu.

msls_head_hreflang

apply_filters( 'msls_head_hreflang', string $language ): string

Filtert den Wert des hreflang-Attributs, etwa en oder en-US. Standardmäßig leitet das Plugin den Wert aus dem Locale des Blogs ab und verwendet die regionale Form nur dann, wenn mehrere Blogs dieselbe Basissprache verwenden. Über den Hook setzen Sie Ihre eigene Zuordnung durch.

msls_filter_string

apply_filters( 'msls_filter_string', string $format, array $links ): string

Filtert den Hinweis „Dieser Beitrag ist auch verfügbar in …“, den das Plugin über oder unter dem Beitragstext einblenden kann. Geben Sie Ihre eigene Formatvorlage zurück; das Array der Sprachlinks kommt mit, damit Ihre Fassung es weiterverwenden kann.

msls_widget_title

apply_filters( 'msls_widget_title', string $name ): string

Filtert den Standardtitel „Multisite Language Switcher“ des klassischen Widgets. Praktisch, wenn jede Widget-Instanz im Netzwerk denselben abweichenden Namen tragen soll, ohne dass Sie jedes Widget einzeln anfassen.

msls_widget_alternative_content

apply_filters( 'msls_widget_alternative_content', string $text ): string

Filtert den Ersatztext im Widget, wenn für die aktuelle Seite keine Übersetzungen vorliegen. Standard ist „No available translations found“.

Sprachlinks

msls_link_create

apply_filters( 'msls_link_create', LinkInterface $obj, ?int $display ): LinkInterface

Feuert in der Factory Link::create(), wenn ein Element des Umschalters in eine der vier eingebauten Varianten überführt wird. Geben Sie ein anderes Objekt zurück, das LinkInterface implementiert, um die Darstellung vollständig selbst zu bestimmen, etwa als Button-Komponente oder als reines SVG-Icon. Rückgabewerte, die das Interface nicht implementieren, werden ignoriert.

Permalinks und Einstellungen

msls_get_postlink

apply_filters( 'msls_get_postlink', string $post_link, OptionsInterface $options ): string

Filtert den aufgelösten Permalink einer Übersetzung. Der Hook feuert, wenn das Plugin ein Options-Objekt (Beitrag, Term oder Archiv-Abfrage) nach der URL fragt, auf die es in einer anderen Sprache zeigen soll. Damit schreiben Sie Übersetzungs-URLs um, etwa für einen Redirector oder um Tracking-Parameter anzuhängen.

Der Hook-Name steht auch als Konstante Options::MSLS_GET_POSTLINK_HOOK zur Verfügung. Er ersetzt den alten, unpräfixierten Filter check_url, der seit 2.7.1 überholt ist.

msls_options_get_permalink

apply_filters( 'msls_options_get_permalink', string $postlink, string $language ): string

Filtert den Permalink, den Options::get_permalink() für eine bestimmte Sprache erzeugt. Dieser Hook feuert vor msls_get_postlink und ist der richtige, wenn Sie speziell die URLs von Archiv- und Taxonomie-Seiten beeinflussen wollen. Ein leerer Rückgabewert führt zum Fallback auf home_url( '/' ).

msls_options_get_flag_url

apply_filters( 'msls_options_get_flag_url', string $url ): string

Filtert die Verzeichnis-URL, aus der die Flaggen-Icons geladen werden. Damit liefern Sie die Flaggen aus Ihrem eigenen CDN, Theme oder Asset-Build aus.

msls_options_get_flag_icon

apply_filters( 'msls_options_get_flag_icon', string $icon, string $language ): string

Filtert den Dateinamen des Flaggen-Icons für eine Sprache. Nutzen Sie ihn, um einzelne Icons auszutauschen, etwa um ein Locale auf eine abweichende Flaggendatei zu legen.

msls_options_get_available_languages

apply_filters( 'msls_options_get_available_languages', array $languages ): array

Filtert das Array aus Sprachcodes und lesbaren Namen, die das Plugin im Backend zur Auswahl anbietet. Damit erweitern Sie die Sprachliste des WordPress-Kerns um eigene Locales oder verstecken solche, die in der Auswahl nie erscheinen sollen.

Blogs und Collection

msls_blog_collection_construct

apply_filters( 'msls_blog_collection_construct', array $blogs ): array

Feuert, während die Collection aufgebaut wird. Der Filter bekommt das Array der Blogs, die aufgenommen werden sollen, und lässt Sie Einträge entfernen, umsortieren oder ersetzen, bevor die Collection dem Rest des Plugins zur Verfügung steht. So begrenzen Sie das Plugin auf eine Teilmenge der Netzwerk-Sites, ohne Einstellungen pro Blog zu ändern.

msls_blog_collection_description

apply_filters( 'msls_blog_collection_description', int $blog_id, string|false $description ): string|false

Bestimmt die Beschreibung, unter der ein Blog in der Collection erscheint. Achten Sie auf die ungewöhnliche Reihenfolge: Der gefilterte Wert ist die Blog-ID, die bisherige Beschreibung kommt als zweites Argument. Der Rückgabewert wird als Beschreibung verwendet, und ein Rückgabewert von false nimmt den Blog aus der Collection heraus.

add_filter(
	'msls_blog_collection_description',
	function ( $blog_id, $description ) {
		return 5 === (int) $blog_id ? false : $description;
	},
	10,
	2
);

msls_blog_collection_get_blog

apply_filters( 'msls_blog_collection_get_blog', ?Blog $blog, string $language ): ?Blog

Filtert die Blog-Instanz, die bei einer Suche nach Sprache zurückkommt. Wenn Sie ein eigenes Objekt oder einen anderen Blog zurückgeben, biegen Sie damit die Sprachauflösung um, etwa um eine Fallback-Kette zu bauen, wenn kein exaktes Locale passt.

msls_blog_collection_get_blog_id

apply_filters( 'msls_blog_collection_get_blog_id', ?int $blog_id, string $language ): ?int

Dasselbe für die Codepfade, die nur die numerische ID brauchen.

msls_blog_collection_get_objects

apply_filters( 'msls_blog_collection_get_objects', array $objects ): array

Filtert die vollständige Liste der Blog-Objekte in der Collection. Damit ändern Sie global die Reihenfolge, die sich auf die Ausgabe auswirkt, oder verstecken Blogs vor allen Konsumenten auf einmal.

msls_blog_collection_get

apply_filters( 'msls_blog_collection_get', array $objects ): array

Filtert die Liste „alle Blogs außer dem aktuellen“. Das ist die Liste, über die im Frontend beim Rendern des Umschalters iteriert wird, und damit der richtige Hook, wenn Sie die Ausgabe filtern wollen, ohne die Backend-Funktionen zu beeinflussen, die mit der vollständigen Collection arbeiten.

msls_get_users

apply_filters( 'msls_get_users', array $args ): array

Filtert die Argumente, mit denen das Plugin get_users() für die Auswahl des Referenz-Benutzers aufruft. Damit schränken Sie die Kandidaten ein, nach Rolle, Fähigkeit oder eigenem Meta-Feld, sodass Redakteure nur die vorgesehenen Konten sehen.

msls_blog_get_permalink

apply_filters( 'msls_blog_get_permalink', string $url, Blog $blog ): string

Filtert den Permalink, der aus einem Blog-Objekt für den aktuellen übersetzbaren Kontext aufgelöst wurde. Damit überschreiben Sie die Übersetzungs-URL pro Blog, nachdem das Plugin entschieden hat, auf welches übersetzte Objekt es zeigt. Der Name steht auch als Konstante Blog::MSLS_GET_PERMALINK_HOOK bereit.

Inhaltstypen

msls_supported_post_types

apply_filters( 'msls_supported_post_types', array $types ): array

Filtert die Liste der Post Types, die das Plugin als übersetzbar behandelt. Enthalten sind standardmäßig post, page und alle öffentlichen eigenen Post Types. Über den Filter nehmen Sie weitere auf oder schließen einzelne aus.

msls_supported_taxonomies

apply_filters( 'msls_supported_taxonomies', array $types ): array

Das Gegenstück für Taxonomien.

Backend: Einstellungsseite

msls_admin_register

do_action( 'msls_admin_register', string $page )

Feuert, nachdem das Plugin seine eigenen Abschnitte auf der Einstellungsseite registriert hat. Der Einstiegspunkt für eine eigene Sektion per add_settings_section().

Der Callback bekommt den Slug der Einstellungsseite als einziges Argument. Geben Sie dieses Argument immer an add_settings_section() und add_settings_field() weiter, statt einen Slug hart zu schreiben. Nur so landen Ihre Felder auf der Seite, die das Plugin tatsächlich rendert. Der Wert lautet aus historischen Gründen weiterhin lloc\Msls\MslsAdmin, obwohl die Klasse selbst inzwischen lloc\Msls\Admin\Admin heißt.

add_action(
	'msls_admin_register',
	function ( $page ) {
		add_settings_section( 'my_section', 'Meine Einstellungen', 'my_render', $page );
	}
);

msls_admin_{section}

do_action( "msls_admin_{$section}", string $page, string $section )

Dynamische Action, die feuert, nachdem das Plugin die Felder eines bestimmten Abschnitts registriert hat. Der Namensteil {section} entspricht der ID des Abschnitts; es gibt vier davon:

  • msls_admin_language_section
  • msls_admin_main_section
  • msls_admin_advanced_section
  • msls_admin_rewrites_section (nur wenn Rewrites aktiv sind)

Damit ergänzen Sie Felder in genau einem Abschnitt, ohne die anderen anzufassen. Wie bei msls_admin_register bekommen Sie den Slug der Seite, hier als erstes von zwei Argumenten, das zweite ist die Abschnitts-ID.

msls_admin_caps

apply_filters( 'msls_admin_caps', string $capability ): string

Filtert die Fähigkeit, die für den Zugriff auf die Einstellungsseite nötig ist. Standard ist manage_options. Damit übergeben Sie die Konfiguration des Plugins an eine andere Rolle oder eine eigene Capability.

msls_max_reference_users_count

apply_filters( 'msls_max_reference_users_count', int $max ): int

Filtert die Obergrenze (Standard: 100) der Benutzer, die in der Auswahl des Referenz-Benutzers erscheinen. In Netzwerken mit vielen Redakteuren erhöhen Sie den Wert, auf großen Installationen senken Sie ihn, damit die Liste handlich bleibt.

msls_reference_users

apply_filters( 'msls_reference_users', array $users ): array

Filtert das Array der Referenz-Benutzer: Schlüssel ist die Benutzer-ID, Wert der user_nicename. Der Hook greift, nachdem die Abfrage gelaufen ist, und eignet sich zum Umbenennen oder Entfernen einzelner Einträge.

msls_admin_validate

apply_filters( 'msls_admin_validate', array $arr ): array

Läuft über die Formularwerte der Einstellungsseite, bevor sie gespeichert werden. Der richtige Ort, um eigene Felder aus msls_admin_register und msls_admin_{section} zu bereinigen, zu normalisieren oder zurückzuweisen.

Backend: Metabox im Editor

msls_metabox_post_select_title

apply_filters( 'msls_metabox_post_select_title', string $title ): string

Filtert den Titel „Multisite Language Switcher“ der Haupt-Metabox auf Beitrags-Bearbeitungsseiten.

msls_metabox_post_import_title

apply_filters( 'msls_metabox_post_import_title', string $title ): string

Filtert den Titel „Multisite Language Switcher – Import content“ der Metabox für den Inhalts-Import, die neben der Haupt-Metabox erscheint.

msls_meta_box_suggest_args

apply_filters( 'msls_meta_box_suggest_args', array $args ): array

Filtert die WP_Query-Argumente, mit denen die Autovervollständigung der Metabox mögliche Beiträge im Ziel-Blog sucht. Damit ergänzen Sie meta_query-Bedingungen, schränken Post-Status ein oder verengen die Suche auf andere Weise.

msls_meta_box_suggest_post

apply_filters( 'msls_meta_box_suggest_post', \WP_Post $post ): mixed

Filtert jedes WP_Post-Objekt, bevor es zu einem Vorschlag wird. Damit reichern Sie Titel an, etwa mit einem Status-Kürzel, oder überspringen einzelne Beiträge, indem Sie etwas zurückgeben, das kein WP_Post ist.

msls_meta_box_suggest_results

apply_filters( 'msls_meta_box_suggest_results', array $results, array $context ): array

Filtert das Array der Vorschläge, bevor es als JSON zurückgeht. Das zweite Argument liefert den Kontext der Anfrage mit blog_id, post_type, s und source_id. Damit ergänzen Sie eigene Einträge, entfernen Duplikate oder ändern die Struktur aus Label und Wert.

msls_meta_box_render_select_hierarchical

apply_filters( 'msls_meta_box_render_select_hierarchical', array $args ): array

Filtert die Argumente für die hierarchische Auswahl innerhalb der Metabox, die per wp_dropdown_pages() gerendert wird. Damit ändern Sie Sortierung, Tiefe oder andere Darstellungsoptionen.

Backend: Taxonomie-Seiten

msls_post_tag_add_input

do_action( 'msls_post_tag_add_input', string $taxonomy )

Feuert, nachdem das Plugin seine Übersetzungsfelder auf der Seite „Neues Element hinzufügen“ einer Taxonomie ausgegeben hat. Der Platz für zusätzliche Felder oder erklärenden Text unterhalb.

msls_post_tag_edit_input

do_action( 'msls_post_tag_edit_input', \WP_Term $tag, string $taxonomy )

Das Gegenstück auf der Bearbeitungsseite eines Terms. Der Handler bekommt den bearbeiteten Term und den Slug der Taxonomie. Das ist nützlich, wenn Ihre Ergänzungen vom konkreten Term abhängen.

msls_post_tag_classic_add_input

do_action( 'msls_post_tag_classic_add_input', string $taxonomy )

Wie msls_post_tag_add_input, aber aus der klassischen Variante der Term-Oberfläche, jener ohne Autovervollständigung, die ein anderes Markup verwendet.

msls_post_tag_classic_edit_input

do_action( 'msls_post_tag_classic_edit_input', \WP_Term $tag, string $taxonomy )

Wie msls_post_tag_edit_input, für die klassische Variante.

msls_post_tag_suggest_args

apply_filters( 'msls_post_tag_suggest_args', array $args ): array

Filtert die get_terms()-Argumente der Term-Autovervollständigung. Damit verengen Sie die Abfrage, etwa auf sprachspezifische Meta-Felder oder eine maximale Trefferzahl.

msls_post_tag_suggest_term

apply_filters( 'msls_post_tag_suggest_term', \WP_Term $term ): mixed

Filtert jeden Term-Kandidaten, bevor er zum Vorschlag wird. Was kein WP_Term mehr ist, fällt aus der Liste. So filtern Sie einzelne Terms heraus oder benennen sie um.

msls_post_tag_suggest_results

apply_filters( 'msls_post_tag_suggest_results', array $results, array $context ): array

Filtert die Term-Vorschläge, bevor der Endpunkt sie als JSON zurückgibt. Der Kontext enthält blog_id, taxonomy, s und source_id.

msls_term_select_title

apply_filters( 'msls_term_select_title', string $title ): string

Filtert die Überschrift „Multisite Language Switcher“ des Übersetzungsbereichs, den das Plugin auf den Term-Seiten ergänzt.

Backend: Verschiedenes

msls_admin_icon_get_edit_new

apply_filters( 'msls_admin_icon_get_edit_new', string $path ): string

Filtert die Backend-URL der kleinen Bearbeiten- und Neu-Icons, die in Listenansichten neben übersetzbaren Zeilen erscheinen. Damit lenken Sie das Ziel um, etwa auf eine eigene Übersetzungs-Oberfläche statt auf die Standard-Bearbeitungsseite.

msls_main_save

do_action( 'msls_main_save', int $object_id, string $class_name )

Diese Action ersetzt die Standard-Speicherroutine der Komponente Admin\Main, sobald ein Callback registriert ist: Das Plugin überspringt dann seine eigene Logik und feuert nur noch die Action mit der Objekt-ID und dem Klassennamen des Options-Objekts. Der Weg, um die Speicherung der Übersetzungsbeziehungen an ein externes System zu übergeben, aber auch der Hook, mit dem Sie am meisten kaputt machen können.

msls_input_select_name

apply_filters( 'msls_input_select_name', string $name ): string

Filtert das name-Attribut der <select>-Elemente des Plugins, das standardmäßig dem Muster msls[<key>] folgt. Relevant, wenn Sie die Formularfelder in eine andere Verarbeitungskette einbinden, die ein anderes Namensschema erwartet. Der Name steht auch als Konstante Select::RENDER_FILTER bereit.

REST-API und Quick Create

Alle Hooks dieses Abschnitts sind neu in 3.0.

msls_quick_create_capability

apply_filters( 'msls_quick_create_capability', bool $default_cap, int $source_post_id, int $source_blog_id, int $target_blog_id, string $context ): bool

Filtert das Ergebnis der Berechtigungsprüfung für Quick Create. Neben der Standardentscheidung bekommen Sie die Beitrags-ID der Quelle (0 bei Listen-Abfragen), die IDs von Quell- und Ziel-Blog sowie einen Kontext: read beim Zugriff auf den Quellbeitrag, create beim Anlegen im Ziel-Blog. Damit darf etwa ein Übersetzer ohne Konto im Quell-Blog einen Beitrag in seinen Blog spiegeln, oder Sie ziehen die Prüfung strenger.

msls_quick_create_post_data

apply_filters( 'msls_quick_create_post_data', array $post_data, \WP_Post $source_post, int $source_blog_id, int $target_blog_id ): array

Filtert das Daten-Array (Titel, Inhalt, Status, Post Type …), das das Plugin an wp_insert_post() übergibt, wenn es über den REST-Endpunkt eine Übersetzung im Ziel-Blog anlegt. Damit setzen Sie einen anderen Status, ergänzen Meta-Vorgaben oder ändern den Titel.

An diesem Hook hängt standardmäßig lloc\Msls\RestApi\RestApi::prefix_source_language() (Priorität 10, vier Argumente) und stellt dem Titel das Locale der Quelle voran. Der Callback lässt sich mit remove_filter() abhängen.

msls_quick_create_tax_input

apply_filters( 'msls_quick_create_tax_input', array $tax_input, \WP_Post $source_post, int $source_blog_id, int $target_blog_id ): array

Filtert die Zuordnung von Taxonomie-Slugs zu übersetzten Term-IDs, die für den neuen Beitrag im Ziel-Blog vorbereitet wurde. Damit setzen Sie Standard-Terms, lassen einzelne Taxonomien weg oder implementieren eine eigene Term-Zuordnung, bevor die Terms gesetzt werden.

msls_quick_create_after_insert

do_action( 'msls_quick_create_after_insert', int $new_post_id, \WP_Post $source_post, int $source_blog_id, int $target_blog_id )

Feuert, nachdem der neue Übersetzungsbeitrag im Ziel-Blog angelegt wurde, und zwar noch innerhalb des switch_to_blog()-Kontexts. Der Ort, um eigene Meta-Felder zu kopieren, Benachrichtigungen zu verschicken oder weitere Inhalte anzulegen. Das Plugin selbst hängt hier RestApi::remember_source_blog() ein, das sich den zuletzt gewählten Quell-Blog pro Benutzer merkt.

msls_quick_create_response

apply_filters( 'msls_quick_create_response', array $response_data, int $new_post_id, \WP_Post $source_post, int $source_blog_id, int $target_blog_id ): array

Filtert das Antwort-Array des Endpunkts, das standardmäßig post_id, edit_url und post_title enthält. Damit ergänzen Sie Felder, die Ihre eigene Redaktions-Oberfläche erwartet, oder entfernen Informationen, die der Client nicht sehen soll.

msls_untranslated_posts

apply_filters( 'msls_untranslated_posts', array $items, int $source_blog_id, int $target_blog_id, string $post_type ): array

Filtert die Liste der unübersetzten Beiträge, die der REST-Endpunkt für die Auswahl „Beitrag zum Übersetzen“ liefert. Damit sortieren Sie um, verbergen Entwürfe oder ergänzen jeden Eintrag um zusätzliche Angaben.

Content-Import

Der Content-Importer kopiert beim Anlegen einer Übersetzung Felder, Meta-Daten, Terms, Beitragsbild und Anhänge aus dem Quellbeitrag. Seine Hooks sind der tiefste Eingriffspunkt, den das Plugin anbietet.

msls_content_import_before_import

do_action( 'msls_content_import_before_import', ImportCoordinates $import_coordinates )

Feuert unmittelbar bevor der Import läuft. Die Import-Koordinaten enthalten Quell- und Ziel-Blog, die Beitrags-IDs und die Sprachen. Der Platz für Protokollierung oder das Vorbereiten externer Ressourcen.

msls_content_import_after_import

do_action( 'msls_content_import_after_import', ImportCoordinates $import_coordinates, ImportLogger $logger, Relations $relations )

Feuert, nachdem der gesamte Import durchgelaufen ist. Neben den Koordinaten bekommen Sie den Logger und die Relationen. Das ist der natürliche Ort, um zu prüfen, was importiert wurde, eine Meldung auszugeben oder Folgeaufgaben anzustoßen.

msls_content_import_data_before_import

apply_filters( 'msls_content_import_data_before_import', array $post_fields, ImportCoordinates $import_coordinates ): array

Filtert das vorbereitete Array der Beitragsfelder, direkt nach der „before import“-Action und bevor irgendein Importer läuft. Damit schreiben Sie Felder global um, etwa URLs in post_content lokalisieren oder einen abweichenden post_status setzen.

msls_content_import_data_after_import

apply_filters( 'msls_content_import_data_after_import', array $post_fields, ImportCoordinates $import_coordinates, ImportLogger $logger, Relations $relations ): array

Filtert die Beitragsfelder, nachdem alle Importer gelaufen sind. Weil Logger und Relationen mitkommen, ist das der richtige Ort für einen letzten Durchgang über das Ergebnis, zum Beispiel um die Änderung eines einzelnen Importers zurückzunehmen.

msls_content_import_importers

apply_filters( 'msls_content_import_importers', ?array $importers, ImportCoordinates $import_coordinates ): ?array

Ersetzt die Importer-Liste für den aktuellen Import vollständig. Ein Rückgabewert ungleich null überspringt den Aufbau über die Factories und verwendet Ihre Liste. Für den Fall, dass Sie eine komplett eigene Import-Strategie brauchen.

msls_content_import_importers_map

apply_filters( 'msls_content_import_importers_map', array $importers, ImportCoordinates $import_coordinates ): array

Filtert die Importer-Liste, nachdem das Plugin sie aus den Factories aufgebaut hat. Anders als msls_content_import_importers arbeitet dieser Hook auf den bereits erzeugten Objekten. Das ist die richtige Wahl, um einzelne Importer zu ergänzen, zu ersetzen oder zu entfernen, ohne den ganzen Ablauf zu übernehmen.

msls_content_import_importers_factories_map

apply_filters( 'msls_content_import_importers_factories_map', array $map ): array

Filtert die Liste der Importer-Factories, bevor irgendein Importer erzeugt wird. Damit hängen Sie eine eigene Factory ein oder entfernen eine vorhandene, und zwar für jeden Import, nicht nur den aktuellen.

Die fünf eingebauten Factory-Typen lauten post-fields, post-meta, terms, post-thumbnail und attachments. Sie sind auch die Werte, die in den drei folgenden dynamischen Hooks eingesetzt werden.

msls_content_import_{type}_importer

apply_filters( "msls_content_import_{$type}_importer", ?Importer $importer, ImportCoordinates $import_coordinates ): ?Importer

Dynamischer Filter, {type} ist einer der fünf Factory-Typen. Wenn Sie hier eine Importer-Instanz zurückgeben, verwendet die Factory diesen Importer für den entsprechenden Inhaltstyp und überspringt die Auswahl über den Slug.

msls_content_import_{type}_importers_map

apply_filters( "msls_content_import_{$type}_importers_map", array $importers_map, ImportCoordinates $import_coordinates ): array

Dynamischer Filter auf die Liste der verfügbaren Importer-Implementierungen (Slug ⇒ Klasse) für einen Inhaltstyp. Damit registrieren Sie eine weitere Variante neben den eingebauten.

msls_content_import_{type}_selected

apply_filters( "msls_content_import_{$type}_selected", string $selected, ImportersFactory $instance ): string

Dynamischer Filter, der bestimmt, welcher Importer-Slug für eine Factory ausgewählt ist. Standard ist der erste Eintrag der Liste. Damit schalten Sie programmatisch zwischen konkurrierenden Implementierungen um, etwa abhängig vom Post Type oder vom Ziel-Blog.

msls_content_import_log_writer

apply_filters( 'msls_content_import_log_writer', LogWriter $log_writer, ImportCoordinates $import_coordinates ): LogWriter

Filtert das Objekt, das die Import-Protokolle schreibt. Geben Sie eine eigene LogWriter-Implementierung zurück, um die Protokolle in Ihr eigenes Log-System zu leiten.

msls_content_import_relation_local_to_source_create

apply_filters( 'msls_content_import_relation_local_to_source_create', mixed $created, int $local_id, int $source_id, OptionsInterface $source_option ): mixed

Greift in das Anlegen der Beziehung „lokal → Quelle“ während des Imports ein. Ein Rückgabewert ungleich null signalisiert dem Plugin, dass Sie die Beziehung selbst angelegt haben; der eingebaute Codepfad wird dann übersprungen. Für Übersetzungsbeziehungen in einem eigenen Datenmodell.

msls_content_import_post_fields_whitelist

apply_filters( 'msls_content_import_post_fields_whitelist', array $fields, ImportCoordinates $import_coordinates ): array

Filtert die Liste der Beitragsfelder, die der duplizierende Importer vom Quell- zum Zielbeitrag kopiert. Damit nehmen Sie weitere Felder mit oder verhindern, dass bestimmte Felder über Sprachgrenzen wandern.

msls_content_import_post_meta_blacklist

apply_filters( 'msls_content_import_post_meta_blacklist', array $blacklist, array $meta, ImportCoordinates $import_coordinates ): array

Filtert die Liste der Meta-Schlüssel, die der duplizierende Importer nicht kopiert. Standardmäßig ausgeschlossen sind Schlüssel wie _edit_last, _edit_lock und _thumbnail_id. Erweitern Sie die Liste um Schlüssel Ihres Themes oder Ihrer Installation, die nicht mit übersetzt werden sollen.

msls_content_import_term_meta_blacklist

apply_filters( 'msls_content_import_term_meta_blacklist', array $blacklist, \WP_Term $term, array $meta, ImportCoordinates $import_coordinates ): array

Dasselbe für Term-Meta beim flach duplizierenden Terms-Importer. Achtung: Der Filter startet hier mit einem leeren Array. Es gibt also keine Standardausschlüsse, die Sie versehentlich überschreiben könnten.

Ein Hook aus dem WordPress-Kern

wp_admin_bar_show_site_icons

Das Plugin fragt diesen Kern-Filter ab, wenn es entscheidet, ob in der Admin-Bar das Blavatar eines Blogs erscheint. Der Name ist absichtlich nicht präfixiert: Es ist der Filter des Kerns, nicht ein eigener. Er steht als Konstante Blog::WP_ADMIN_BAR_SHOW_SITE_ICONS_HOOK bereit.

Überholte Hooks

check_url

Der unpräfixierte Filter check_url auf dem Permalink einer Übersetzung ist seit 2.7.1 überholt und wird über apply_filters_deprecated() noch bedient. Verwenden Sie msls_get_postlink.

Weiterlesen

Der Artikel ist auch in English verfügbar.