SaveTo Wishlist für WooCommerce
Loslegen
So erweitern Sie SaveTo Wishlist Pro mit Hooks und der REST-API - SaveTo Wishlist
  1. Startseite
  2. Wissensdatenbank
  3. Wunschzettel
  4. Entwickler-Leitfäden
  5. Wie Sie SaveTo Wishlist Pro mit Hooks und der REST-API erweitern können
  1. Startseite
  2. Wissensdatenbank
  3. Wunschzettel
  4. Wie Sie SaveTo Wishlist Pro mit Hooks und der REST-API erweitern können

Wie Sie SaveTo Wishlist Pro mit Hooks und der REST-API erweitern können

Müssen Sie ändern, wie SaveTo Wishlist Pro funktioniert, ohne das Plugin zu bearbeiten? Sie können dies mit WordPress-Hooks und der REST-API des Plugins tun. Dieser Artikel listet die Hooks und Routen auf, die Sie verwenden können, mit den Argumenten, die jeder übergibt, und kurzen PHP-Beispielen. Alles hier gilt für SaveTo Wishlist Pro 1.0.4.

Bevor Sie beginnen

SaveTo Wishlist Pro läuft auf SaveTo Wishlist Lite, daher müssen beide Plugins aktiv sein. Platzieren Sie Ihren Hook-Code in einem kleinen benutzerdefinierten Plugin oder einem Must-Use-Plugin, nicht in den SaveTo Wishlist Pro-Dateien, da Plugin-Updates diese Dateien ersetzen.

Jeder Pro-Hook-Name beginnt mit stwpro_. Die Hooks für das kostenlose Plugin werden in So erweitern Sie SaveTo Wishlist mit Hooks und der REST-API behandelt.

Die unten aufgeführten Hooks und Filter werden mit den übergebenen Argumenten aufgelistet. Wenn Sie einen Filter hinzufügen, stellen Sie die Anzahl der akzeptierten Argumente entsprechend ein, oder WordPress übergibt Ihnen nur das erste Argument. Geben Sie das erste Argument (oder eine geänderte Kopie davon) von jedem Filter zurück.

REST-API-Routen

Alle SaveTo Wishlist Pro-Routen verwenden den Namespace saveto-wishlist-pro/v1, sodass die vollständige URL wie https://example.com/wp-json/saveto-wishlist-pro/v1/analytics/products-insight aussieht.

Wer kann die Routen aufrufen

Die Routen für Analysen, Automatisierungen, Standard-Wunschlisten und Lizenzen dienen den eigenen Admin-Bildschirmen des Plugins und können sich ändern. Sie beantworten nur Anfragen von einem angemeldeten Benutzer mit der Berechtigung manage_options (standardmäßig Administratoren). Jeder andere erhält einen 401- oder 403-Fehler. Senden Sie die Anfrage mit einer normalen WordPress-Anmeldesitzung und einem REST-Nonce oder mit einer anderen REST-Authentifizierungsmethode, die Ihre Website unterstützt.

Die Lese-Routen für Analysen, die Routen für Automatisierungen und die Routen für Lizenzen haben auch eine Ratenbegrenzung pro Benutzer. Leseanfragen (GET) erhalten 300 Anfragen pro Minute. Alle anderen Methoden erhalten 60 Anfragen pro Minute. Wenn Sie diese überschreiten, gibt die Route einen 429-Fehler mit dem Code rate_limit_exceeded zurück. Sie können die Limits mit dem Filter stwpro_api_rate_limit ändern, der unten behandelt wird.

Analyse-Routen

Der Basis-Pfad ist /analytics.

RouteMethodeWer kann sie aufrufenWas es tut
/analytics/products-insightGETAdministratoren, RatenbegrenzungGibt die beliebtesten, trendigsten und zuletzt hinzugefügten Produkte zurück. Akzeptiert period mit dem Wert 7days oder 30days. Der Standardwert ist 7days.
/analytics/category-brand-insightGETAdministratoren, RatenbegrenzungGibt Einblicke in Kategorien und Marken zurück.
/analytics/engagement-insightGETAdministratoren, RatenbegrenzungGibt Einblicke in die Interaktion mit Produkten zurück.
/analytics/timebased-trendsGETAdministratoren, RatenbegrenzungGibt Trends im Zeitverlauf zurück. Akzeptiert range mit dem Wert 7days, 30days, 90days oder 365days. Der Standardwert ist 30days.
/analytics/customer-behaviorGETAdministratoren, RatenbegrenzungGibt Einblicke in das Kundenverhalten zurück, einschließlich der Top-Wunschlisten-Ersteller und Kundensegmente.
/analytics/refreshPOSTAdministratorenLöscht die Analytics-Caches. Ein Benutzer kann alle 30 Sekunden eine Aktualisierung durchführen. Eine schnellere Anfrage gibt einen 429-Fehler mit dem Code cooldown_active zurück.

Die Analytics-Antworten werden standardmäßig eine Stunde lang zwischengespeichert. Ein erfolgreicher Aufruf von /analytics/refresh löscht den Cache, sodass der nächste Lesevorgang frische Daten zurückgibt.

Dieses Beispiel liest die Trendprodukte der letzten 30 Tage aus dem Browser in einem Skript, das auf einem WordPress-Admin-Bildschirm ausgeführt wird:

wp.apiFetch( {
    path: '/saveto-wishlist-pro/v1/analytics/products-insight?period=30days',
} ).then( ( data ) => {
    console.log( data.most_popular, data.trending, data.recently_added );
} );

Automatisierungsrouten

Der Basispfad ist /automations. Alle vier Routen erfordern einen Administrator und sind ratenbegrenzt.

RouteMethodeWas es tut
/automations/get-automationsGETGibt gespeicherte Automatisierungen zurück. Abfrageparameter werden als Filter verwendet.
/automations/save-automationPOSTErstellt oder aktualisiert eine Automatisierung. Sie liest id, trigger_type, action_type, status, description und action_data.
/automations/delete-automationDELETELöscht die Automatisierung mit der ID im Parameter id. Gibt einen 400-Fehler zurück, wenn die ID leer ist.
/automations/send-test-emailPOSTSendet eine Test-E-Mail mit Dummy-Daten. Sie liest email_to, email_subject und email_body.

Standard-Wunschlisten-Routen

Der Basispfad ist /default-wishlists. Alle Routen erfordern einen Administrator.

RouteMethodeWas es tut
/default-wishlists/settingsGET, POSTLiest oder speichert die Standard-Wunschlisteneinstellungen. Die POST-Anfrage liest den Parameter list.
/default-wishlists/migration-statusGETGibt den Fortschritt des Jobs zurück, der Standard-Wunschlisten für bestehende Benutzer ohne eine solche erstellt, und wie viele Benutzer noch berechtigt sind.
/default-wishlists/start-migrationPOSTStartet diesen Job.
/default-wishlists/cancel-migrationPOSTBricht diesen Job ab.

Webhook-Route

Die Route /webhook/wishlist-created unterscheidet sich von den anderen. Sie verwendet keine WordPress-Anmeldung. Sie verwendet den Webhook-API-Schlüssel, der im Header x-api-key oder im Abfrageparameter api_key gesendet wird, und antwortet mit 401, wenn der Schlüssel fehlt oder falsch ist. Eine POST-Anfrage löst die Aktion stwpro_wishlist_created aus. Eine GET-Anfrage mit einem Parameter wishlist_id gibt eine öffentliche, veröffentlichte Wunschliste zurück. Details zu Einrichtung und Sicherheit finden Sie unter How to connect external tools using wishlist webhooks und How to secure the SaveTo Wishlist Pro webhook API endpoint.

Filter für Routenberechtigungen

FilterArgumenteWas es tut
stwpro_api_admin_permissions_check$response, $requestFiltert das Ergebnis der Administratorprüfung für Routen, die nur für Administratoren bestimmt sind. Geben Sie true zurück, um den Zugriff zu erlauben, oder einen WP_Error, um ihn zu verweigern.
stwpro_webhook_permissions_check$response, $requestFiltert das Ergebnis der API-Schlüsselprüfung für die Webhook-Route.
stwpro_api_rate_limit$limit, $request, $is_readLegt die pro Minute erlaubten Anfragen fest. Die Standardwerte sind 300 für Leseanfragen und 60 für den Rest.
stwpro_api_rate_limit_check$result, $requestFiltert das Endergebnis der Ratenbegrenzungsprüfung.

Zum Beispiel erhöht dies das Schreiblimit auf 120 Anfragen pro Minute:

add_filter( 'stwpro_api_rate_limit', function ( $limit, $request, $is_read ) {
    return $is_read ? $limit : 120;
}, 10, 3 );

Automatisierungs-Hooks

Automatisierungen verbinden einen Auslöser, z. B. ein Produkt, das in den Angeboten erscheint, mit einer Aktion, z. B. dem Senden einer E-Mail. Diese Hooks ermöglichen es Ihnen, eigene Aktionen hinzuzufügen und zu ändern, was die integrierten Aktionen senden.

Eigene Automatisierungsaktion hinzufügen

Zwei Filter arbeiten zusammen. Verwenden Sie stwpro_automation_actions, um Ihre Aktion zur Liste der Aktionen hinzuzufügen, und verwenden Sie stwpro_automation_action_handlers, um anzugeben, welche Funktion sie ausführt. Die integrierten Aktionstypen sind send_email, call_webhook und update_user_meta.

FilterArgumenteWas es tut
stwpro_automation_actions$actionsFiltert die Liste der Aktionstypen. Jeder Eintrag ist ein Aktionsschlüssel und seine Bezeichnung.
stwpro_automation_action_handlers$handlersFiltert die Zuordnung von Aktionstyp zu Handler. Der Handler muss aufrufbar sein. Wenn Ihr Callback etwas anderes als ein Array zurückgibt, ignoriert das Plugin dies und behält die integrierten Handler bei.

WordPress ruft Ihren Handler mit fünf Argumenten auf: die aktiven Automatisierungen dieses Typs für den Auslöser, die Automatisierungsdaten, das Auslöser-Kontextobjekt, ein boolescher Wert für die Bedingung der Produktkategorie und ein Array zusätzlicher Parameter.

add_filter( 'stwpro_automation_actions', function ( $actions ) {
    $actions['send_to_crm'] = __( 'Send to my CRM', 'my-plugin' );
    return $actions;
} );

add_filter( 'stwpro_automation_action_handlers', function ( $handlers ) {
    $handlers['send_to_crm'] = 'my_plugin_process_crm_automations';
    return $handlers;
} );

function my_plugin_process_crm_automations( $automations, $automation_data, $context_data, $category_condition, $params ) {
    foreach ( $automations as $automation ) {
        // Send $automation_data to your CRM here.
    }
}

Ändern, wer eine Automatisierungs-E-Mail erhält

Zwei Filter legen den E-Mail-Empfänger fest. stwpro_automation_filter_email_to_customer wird einmal pro Wunschlistenbesitzer für die Auslöser 'Produkt im Angebot' und 'Produkt wieder auf Lager' ausgeführt. stwpro_automation_filter_email_to wird für alle anderen Auslöser ausgeführt. Bei beiden Filtern überspringt eine leere oder ungültige Adresse die E-Mail.

FilterArgumente
stwpro_automation_filter_email_to$email_to, $action_data, $context_data, $data, $params
stwpro_automation_filter_email_to_customer$email_to, $action_data, $per_customer_data, $context_data, $params

Dieses Beispiel sendet jede Automatisierungs-E-Mail an eine Testadresse auf einer Staging-Site und überspringt Kunden, die sich abgemeldet haben:

add_filter( 'stwpro_automation_filter_email_to', function ( $email_to ) {
    if ( 'production' !== wp_get_environment_type() ) {
        return '[email protected]';
    }
    return $email_to;
}, 10, 1 );

add_filter( 'stwpro_automation_filter_email_to_customer', function ( $email_to, $action_data, $per_customer_data ) {
    $customer_id = (int) ( $per_customer_data['customer_id'] ?? 0 );
    if ( $customer_id && get_user_meta( $customer_id, 'no_wishlist_alerts', true ) ) {
        return '';
    }
    return $email_to;
}, 10, 3 );

Automatisierungsinhalte und -daten ändern

Diese vier Filter übergeben den Wert, den Sie zuerst filtern. Die nächsten Argumente sind der Automatisierungsdatensatz, die Aktionseinstellungen, der Triggerkontext, die aufgelösten Variablendaten und die zusätzlichen Parameter. Sie werden ausgeführt, bevor das Plugin die Variablentags ersetzt, sodass Ihre Änderungen immer noch Tags wie {customer_name} enthalten können.

FilterArgumenteWas es filtert
stwpro_automation_email_subject_template$subject_template, $automation, $action_data, $context_data, $data, $paramsDer rohe E-Mail-Betreff.
stwpro_automation_email_message_template$message_template, $automation, $action_data, $context_data, $data, $paramsDie rohe E-Mail-Nachricht.
stwpro_automation_webhook_payload_template$payload_template, $automation, $action_data, $context_data, $data, $paramsDie rohe Webhook-Nutzlast.
stwpro_automation_usermeta_meta_value_template$meta_value, $automation, $action_data, $context_data, $data, $paramsDer rohe Wert für die Aktion Benutzer-Metadaten aktualisieren.

Drei weitere Filter haben ihre eigenen Argumente:

FilterArgumenteWas es filtert
stwpro_automation_variables$trigger_variables, $trigger_typeDie für einen Trigger verfügbaren Variablentags.
stwpro_automation_webhook_recipes$recipesDie Webhook-Schnellstart-Rezepte.
stwpro_automations_get_all_automations$automations, $trigger_type, $action_typeDie aktiven Automatisierungen für einen Trigger- und Aktionstyp.

Für die Variablendaten jedes Triggers verwenden Sie einen dieser Filter. Sie alle übergeben $variable_data, $trigger_type, $context_data.

  • stwpro_automation_data_wishlist_created
  • stwpro_automation_data_item_added_to_wishlist
  • stwpro_automation_data_item_removed_from_wishlist
  • stwpro_automation_data_product_on_sale
  • stwpro_automation_data_product_back_in_stock

Analytics-Hooks

Kunden-Tier- und Segment-Schwellenwerte

Die Kundenanalyse stuft jeden Top-Wunschlisten-Nutzer in eine Stufe ein. Ein Kunde erreicht eine Stufe, wenn beide Zahlen erfüllt sind: die Anzahl der Wunschlisten und der ausgegebene Gesamtbetrag. Das Plugin prüft die Stufen von Platin abwärts bis Bronze, und Kunden, die keine erfüllen, sind regulär. Jeder Filter nimmt ein Argument, den Standardwert, und gibt eine Zahl zurück.

StufeFilter für die Anzahl der WunschlistenStandardFilter für ausgegebenen BetragStandard
Platinstwpro_admin_platinum_threshold8stwpro_admin_platinum_spent_threshold1500
Goldstwpro_admin_gold_threshold5stwpro_admin_gold_spent_threshold800
Silberstwpro_admin_silver_threshold3stwpro_admin_silver_spent_threshold400
Bronzestwpro_admin_bronze_threshold2stwpro_admin_bronze_spent_threshold200
add_filter( 'stwpro_admin_platinum_threshold', function () {
    return 10;
} );

add_filter( 'stwpro_admin_platinum_spent_threshold', function () {
    return 2500;
} );

Andere Analysefilter ändern die Kundensegmente und die auf den Analysebildschirmen angezeigten Listen:

FilterArgumenteStandardWas es tut
stwpro_admin_vip_threshold$wert5Anzahl der Wunschlisten für das VIP-Kundensegment.
stwpro_admin_vip_spent_threshold$wert800Gesamtausgaben für das VIP-Kundensegment.
stwpro_admin_inactive_days$wert90Tage ohne Aktivität, bevor ein Kunde als inaktiv gilt.
stwpro_admin_top_wishlisters_limit$limit15Wie viele Kunden die Liste der Top-Wunschlisten-Nutzer zurückgibt.
stwpro_admin_top_wishlisters_excluded_roles$ausgeschlossene_rollenarray( 'administrator', 'shop_manager' )Rollen, die aus der Top-Wunschlisten-Liste ausgeschlossen sind.
stwpro_admin_customer_segments$segments, $total_customersKeineDie endgültige Liste der Kundensegmente.

Analysedaten, Cache und Aktualisierung

HookTyp und ArgumenteWas es tut
stwpro_analytics_products_insight_dataFilter: $products_insight, $requestÄndert die Daten, die die Route 'products-insight' zurückgibt.
stwpro_analytics_products_insight_cache_durationFilter: $secondsLegt fest, wie lange diese Antwort im Cache gespeichert wird. Der Standardwert ist eine Stunde. Die Routen für Kategorien und Marken, Engagement, zeitbasierte Trends und Kundenverhalten haben entsprechende Filter: stwpro_analytics_category_brand_insight_cache_duration, stwpro_analytics_engagement_insight_cache_duration, stwpro_analytics_timebased_trends_cache_duration und stwpro_analytics_customer_behavior_cache_duration.
stwpro_analytics_refresh_cooldownFilter: $secondsLegt die Sekunden fest, die ein Benutzer zwischen den Aktualisierungen wartet. Der Standardwert ist 30. Geben Sie 0 zurück, um das Warten zu deaktivieren.
stwpro_analytics_refreshedAktion: $timestampWird ausgeführt, nachdem eine Aktualisierung die Caches gelöscht hat. Verwenden Sie sie, um Ihre eigenen abgeleiteten Daten neu zu erstellen.

Die oben genannten Schwellenwerte werden gelesen, wenn die Analysen berechnet werden. Wenn Sie einen ändern und sich der Bildschirm nicht ändert, aktualisieren Sie die Analysen, damit die zwischengespeicherten Ergebnisse neu erstellt werden.

Standard-Wunschlisten-Hooks

Diese Hooks steuern die Wunschlisten, die Pro automatisch für neue Benutzer erstellt.

HookTyp und ArgumenteWas es tut
stwpro_default_wishlists_sync_thresholdFilter: $thresholdWenn die konfigurierte Liste mehr Wunschlisten enthält als diese Zahl, erstellt Pro sie im Hintergrund mit Action Scheduler anstatt während der Registrierung. Der Standardwert ist 3.
stwpro_default_wishlists_max_entriesFilter: $maxDie maximale Anzahl von Standard-Wunschlisten, die in der Liste gespeichert werden können. Der Standardwert ist 20.
stwpro_after_seed_default_wishlistsAktion: $user_id, $created, $listWird ausgeführt, nachdem ein Benutzer die Standard-Wunschlisten erhalten hat. $created ist die Anzahl der erstellten Wunschlisten. Es wird nicht ausgeführt, wenn keine erstellt wurden.
add_action( 'stwpro_after_seed_default_wishlists', function ( $user_id, $created, $list ) {
    update_user_meta( $user_id, 'default_wishlists_created', $created );
}, 10, 3 );

Andere Hooks

HookTyp und ArgumenteWas es tut
stwpro_wholesale_priceFilter: $price, $product_id, $user, $user_wholesale_roleLässt ein anderes Großhandel-Plugin den Großhandelspreis liefern. Geben Sie einen Float-Wert zurück, um die Großhandelspreise-Suche zu überspringen. Geben Sie false zurück, um die Standardsuche zu verwenden.
stwpro_disable_abilitiesFilter: $disabledGeben Sie true zurück, um zu verhindern, dass Pro seine Fähigkeiten registriert. Sie können auch die Konstante STWPRO_DISABLE_ABILITIES als true definieren.
stwpro_show_powered_by_in_emailFilter: $showGeben Sie false zurück, um die Zeile „Powered by SaveTo Wishlist“ aus den von Pro gesendeten E-Mails zu entfernen.
stwpro_wishlist_createdAktion: $wishlist_data, $wishlist_itemsWird ausgeführt, wenn eine gültige POST-Anfrage die Webhook-Route /webhook/wishlist-created erreicht.
add_filter( 'stwpro_show_powered_by_in_email', '__return_false' );

Häufig gestellte Fragen

Kann ich die Analyse- oder Automatisierungsrouten von außerhalb von WordPress aufrufen?
Nur als angemeldeter Administrator. Diese Routen prüfen auf die Berechtigung manage_options und bedienen die eigenen Bildschirme des Plugins. Bauen Sie daher auf den obigen Hooks auf, wenn etwas stabil bleiben muss. Für externe Systeme verwenden Sie die Webhook-Route mit ihrem API-Schlüssel.

Warum werden meine Schwellenwertänderungen nicht auf dem Analysebildschirm angezeigt?
Die Analyseergebnisse werden standardmäßig eine Stunde lang zwischengespeichert. Aktualisieren Sie die Analyse oder verkürzen Sie den Cache mit den Filtern für die Cache-Dauer, und die neuen Schwellenwerte werden angewendet.

Brauchen Sie Hilfe?

Wenn Sie eine Frage haben oder auf Probleme stoßen, sind wir für Sie da.

War dieser Artikel hilfreich?

Verwandte Artikel

Support benötigt?

Können Sie die gesuchte Antwort nicht finden?
Support kontaktieren
Kauf abschließen