Hooks
Aktionen und Filter in WordPress: Grundlagen und Anwendung
Aktion: Eine Action in WordPress ist ein benutzerdefinierter PHP-Callback, der an bestimmten Punkten im WordPress-Lebenszyklus ausgeführt wird. Dies geschieht meist als Reaktion auf Ereignisse wie das Laden einer Seite, das Veröffentlichen eines Beitrags oder das Anmelden eines Benutzers. Actions verändern keine Daten direkt, sondern führen Aufgaben aus, ohne dass ein Rückgabewert erwartet wird.
Beispiel:
add_action("init"'init', "meine_funktion"'meine_funktion');
function meine_funktion() {
// Code, der beim Laden von WordPress ausgeführt wird
}
Filter: Ein Filter in WordPress ermöglicht es, Daten zu ändern, bevor sie ausgegeben oder gespeichert werden. Filter sind benutzerdefinierte PHP-Callbacks, die den Datenstrom manipulieren, und sie erwarten immer einen Rückgabewert. Sie werden verwendet, um Inhalte wie Beiträge, Titel oder Kommentare vor der Anzeige zu verändern.
Beispiel:
add_filter("the_content", "meine_inhaltsfilter");
function meine_inhaltsfilter($content) {
// Code, der den Inhalt manipuliert
return $content . " - Zusatztext";
}
Im folgenden Abschnitt ist oft die Rede von "Daten von Abacus". Die Datenstruktur von Abacus können Sie hier einsehen:
- Produkte: https://apihub.abacus.ch/apis/2024/entity/shop-products.api
- Klassierungen: https://apihub.abacus.ch/apis/2024/entity/shop-product-classification-elements.api
Übersetzungen
Zurzeit wird TranslatePress und WPML von PingWoo direkt unterstützt. Sie können jedoch problemlos auch andere Plugins verwenden und diese mit unseren Hooks selbst integrieren:
Produkte: (Action) pingwoo_product_translate
Klassierungen: (Action) pingwoo_category_translate
Diese Hooks liefern zwei Argumente:
- (Integer) Die ID von der Kategorie in WooCommerce
- (Object) Die Daten von Abacus
Varianten: (Action) pingwoo_variant_translate
Diese Hook liefert drei Argumente:
- (Object) Die Antwort von WooCommerce (REST API Antwort)
- (Integer) Die ID vom Hauptprodukt (Variant 0)
- (Object) Die Daten von Abacus
Die Hooks werden immer nach dem Hinzufügen von Produkten, Varianten oder Klassierungen ausgelöst.
Manuelle Übersetzungen
Hinzufügen: (Action) pingwoo_add_translation
Diese Hook benötigt drei Argumente:
- (String) Text in originaler Sprache
- (String) Text in übersetzter Sprache
- (String) Die Sprache im ISO 639-1 Format
Diese Hook kann zu jeder Zeit ausgeführt werden.
Generieren lassen: (Filter) pingwoo_process_translation
Diese Hook benötigt ein Argument:
- (Callable) Funktion welche definiert wie die Texte zusammengesetzt werden
- Muss zwingend ein Array zurückgeben!
- Format: array("de" => "Übersetzung", "en" => "translation", "fr" => "traduction")
Produktinformationen
Sollten Informationen nicht stimmen, oder wenn Sie eine spezielle Struktur im Abacus besitzen, können Sie verschiedene Produktinformationen überschrieben. Dafür sind folgende Hooks eventuell nützlich:
Produkt Titel: (Filter) pingwoo_product_name
Diese Hook liefert drei Argumente:
- (String) Der Titel welcher verwendet wird, falls keine Änderungen vorgenommen werden
- (Object) Die Daten von Abacus
- (String) Der Sprachcode fürs Produkt, welcher momentan angewendet wird
Produkt Titel Felder: (Filter) pingwoo_product_name_fields_keys
Diese Hook liefert zwei Argumente:
- (Array) Die Felder die standardmässig importiert werden (Designation)
- (Object) Die Daten von Abacus
Diese Hook unterstützt Sprachen automatisch. Um z.B. die Designation1 und Designation2 zu kombinieren müssen Sie folgendes Array zurückgeben:
return [
"Texts" => "Designation1",
"Texts" => "Designation2"
];
Desweiteren wird diese Hook nicht ausgeführt, wenn Sie die pingwoo_product_name Hook verwenden.
Produkt Beschreibung: (Filter) pingwoo_product_description
Diese Hook liefert zwei Argumente:
- (String) Die Beschreibung welche verwendet wird, falls keine Änderungen vorgenommen werden
- (Object) Die Daten von Abacus
Produkt Kurzbeschreibung: (Filter) pingwoo_product_short_description
Diese Hook liefert zwei Argumente:
- (String) Die Kurzbeschreibung welche verwendet wird, falls keine Änderungen vorgenommen werden
- (Object) Die Daten von Abacus
Weitere Produktinformationen können nachdem ein Produkt hinzugefügt wurde mit folgenden Hooks angepasst oder hinzugefügt werden:
Produkte: (Action) pingwoo_product_info
Diese Hook liefert zwei Argumente:
- (Integer) Die WooCommerce Produkt ID
- (Object) Die Daten von Abacus
Varianten: (Action) pingwoo_variant_info
Diese Hook liefert drei Argumente:
- (Integer) Die WooCommerce Produkt ID
- (Integer) Die ID vom Hauptprodukt (Variant 0)
- (Object) Die Daten von Abacus
Für Entwickler
Möchten Sie Ihren Code testen und überprüfen? PingWoo bietet hierfür diverse Hooks an:
Einzelnes Produkt importieren: (Action) pingwoo_test_product
Diese Hook benötigt zwei Argumente:
- (Integer) Die Abacus Produkt ID
- (Integer) Die Abacus Varianten ID
- Optional: Standardmässig wird die ID 0 verwendet
Einzelnes Produkt mit allen Varianten importieren: (Action) pingwoo_test_variant
Diese Hook benötigt ein Argument:
- (Integer) Die Abacus Produkt ID
Weitere Hooks können auf Anfrage gerne hinzugefügt werden.