SaveTo Wishlist dla WooCommerce
Zacznij
Jak rozszerzyć SaveTo Wishlist Pro za pomocą haków i REST API - SaveTo Wishlist
  1. Strona główna
  2. Baza wiedzy
  3. Lista życzeń
  4. Przewodniki dla deweloperów
  5. Jak rozszerzyć SaveTo Wishlist Pro za pomocą hooków i REST API
  1. Strona główna
  2. Baza wiedzy
  3. Lista życzeń
  4. Jak rozszerzyć SaveTo Wishlist Pro za pomocą hooków i REST API

Jak rozszerzyć SaveTo Wishlist Pro za pomocą hooków i REST API

Potrzebujesz zmienić sposób działania SaveTo Wishlist Pro bez edycji wtyczki? Możesz to zrobić za pomocą haków WordPress i API REST wtyczki. W tym artykule wymieniono haki i trasy, których możesz użyć, wraz z argumentami, które każdy z nich przekazuje, i krótkimi przykładami PHP. Wszystko tutaj dotyczy SaveTo Wishlist Pro w wersji 1.0.4.

Zanim zaczniesz

SaveTo Wishlist Pro działa na bazie SaveTo Wishlist Lite, więc obie wtyczki muszą być aktywne. Umieść swój kod haków w małej niestandardowej wtyczce lub wtyczce „must-use”, a nie w plikach SaveTo Wishlist Pro, ponieważ aktualizacje wtyczki zastępują te pliki.

Każda nazwa haka Pro zaczyna się od stwpro_. Haki dla darmowej wtyczki są opisane w Jak rozszerzyć SaveTo Wishlist za pomocą haków i API REST.

Poniższe haki i filtry są wymienione wraz z przekazywanymi argumentami. Dodając filtr, ustaw liczbę akceptowanych argumentów, aby pasowała, w przeciwnym razie WordPress przekaże Ci tylko pierwszy argument. Zwróć pierwszy argument (lub jego zmienioną kopię) z każdego filtra.

Trasy REST API

Wszystkie trasy SaveTo Wishlist Pro używają przestrzeni nazw saveto-wishlist-pro/v1, więc pełny adres URL wygląda tak: https://example.com/wp-json/saveto-wishlist-pro/v1/analytics/products-insight.

Kto może wywoływać trasy

Trasy analityczne, automatyzacji, domyślnych list życzeń i licencji obsługują własne ekrany administracyjne wtyczki i mogą ulec zmianie. Odpowiadają one tylko na żądania zalogowanego użytkownika, który ma uprawnienie manage_options (domyślnie administratorzy). Każdy inny otrzyma błąd 401 lub 403. Wyślij żądanie z normalną sesją logowania WordPress i noncem REST, lub z dowolną inną obsługiwaną przez Twoją witrynę metodą uwierzytelniania REST.

Trasy odczytu analityki, trasy automatyzacji i trasy licencji mają również limit żądań na użytkownika. Żądania odczytu (GET) otrzymują 300 żądań na minutę. Wszystkie inne metody otrzymują 60 żądań na minutę. Po przekroczeniu limitu trasa zwraca błąd 429 z kodem rate_limit_exceeded. Limity można zmienić za pomocą filtra stwpro_api_rate_limit, opisanego poniżej.

Trasy analityczne

Podstawowa ścieżka to /analytics.

TrasaMetodaKto może ją wywołaćCo robi
/analytics/products-insightGETAdministratorzy, z limitem żądańZwraca najpopularniejsze, najczęściej oglądane i ostatnio dodane produkty. Akceptuje parametr period z wartością 7days lub 30days. Domyślnie jest to 7days.
/analytics/category-brand-insightGETAdministratorzy, z limitem żądańZwraca analizy kategorii i marek.
/analytics/engagement-insightGETAdministratorzy, z limitem żądańZwraca analizy zaangażowania dla produktów.
/analytics/timebased-trendsGETAdministratorzy, z limitem żądańZwraca trendy w czasie. Akceptuje parametr range z wartością 7days, 30days, 90days lub 365days. Domyślnie jest to 30days.
/analytics/customer-behaviorGETAdministratorzy, z limitem żądańZwraca analizy zachowań klientów, w tym najlepszych twórców list życzeń i segmentów klientów.
/analytics/refreshPOSTAdministratorzyCzyści pamięć podręczną analityki. Użytkownik może odświeżyć raz na 30 sekund. Szybsze żądanie zwraca błąd 429 z kodem cooldown_active.

Odpowiedzi analityczne są domyślnie buforowane przez godzinę. Pomyślne wywołanie /analytics/refresh czyści pamięć podręczną, dzięki czemu następne odczytanie zwraca świeże dane.

Ten przykład odczytuje najpopularniejsze produkty z ostatnich 30 dni z przeglądarki, w skrypcie uruchamianym na ekranie administratora WordPress:

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

Trasy automatyzacji

Ścieżka bazowa to /automations. Wszystkie cztery trasy wymagają administratora i są ograniczone czasowo.

TrasaMetodaCo robi
/automations/get-automationsGETZwraca zapisane automatyzacje. Parametry zapytania są używane jako filtry.
/automations/save-automationPOSTTworzy lub aktualizuje automatyzację. Odczytuje id, trigger_type, action_type, status, description i action_data.
/automations/delete-automationUSUŃUsuwa automatyzację z identyfikatorem w parametrze id. Zwraca błąd 400, gdy identyfikator jest pusty.
/automations/send-test-emailPOSTWysyła przykładowy e-mail testowy z fikcyjnymi danymi. Odczytuje email_to, email_subject i email_body.

Domyślne trasy list życzeń

Ścieżka bazowa to /default-wishlists. Wszystkie trasy wymagają administratora.

TrasaMetodaCo robi
/default-wishlists/settingsGET, POSTOdczytuje lub zapisuje domyślne ustawienia list życzeń. Żądanie POST odczytuje parametr list.
/default-wishlists/migration-statusGETZwraca postęp zadania tworzenia domyślnych list życzeń dla istniejących użytkowników, którzy ich nie mają, oraz ilu użytkowników nadal się kwalifikuje.
/default-wishlists/start-migrationPOSTRozpoczyna to zadanie.
/default-wishlists/cancel-migrationPOSTAnuluje to zadanie.

Trasa Webhook

Trasa /webhook/wishlist-created różni się od pozostałych. Nie używa logowania WordPress. Używa klucza API webhook, wysyłanego w nagłówku x-api-key lub jako parametr zapytania api_key, i odpowiada kodem 401, gdy klucz jest brakujący lub nieprawidłowy. Żądanie POST uruchamia akcję stwpro_wishlist_created. Żądanie GET z parametrem wishlist_id zwraca publiczną, opublikowaną listę życzeń. Szczegółowe informacje o konfiguracji i bezpieczeństwie można znaleźć w Jak połączyć zewnętrzne narzędzia za pomocą webhooków list życzeń oraz Jak zabezpieczyć punkt końcowy API webhook SaveTo Wishlist Pro.

Filtry dla uprawnień tras

FiltrArgumentyCo robi
stwpro_api_admin_permissions_check$response, $requestFiltruje wynik sprawdzenia administratora dla tras dostępnych tylko dla administratorów. Zwróć true, aby zezwolić, lub WP_Error, aby odmówić.
stwpro_webhook_permissions_check$response, $requestFiltruje wynik sprawdzenia klucza API dla trasy webhook.
stwpro_api_rate_limit$limit, $request, $is_readUstawia dozwoloną liczbę żądań na minutę. Domyślnie jest to 300 dla żądań odczytu i 60 dla pozostałych.
stwpro_api_rate_limit_check$result, $requestFiltruje ostateczny wynik sprawdzenia limitu żądań.

Na przykład, to zwiększa limit zapisu do 120 żądań na minutę:

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

Haczyki automatyzacji

Automatyzacje łączą wyzwalacz, taki jak promocja produktu, z akcją, taką jak wysłanie wiadomości e-mail. Te haczyki pozwalają dodawać własne akcje i zmieniać dane wysyłane przez wbudowane akcje.

Dodaj własną akcję automatyzacji

Dwa filtry działają razem. Użyj stwpro_automation_actions, aby dodać swoją akcję do listy akcji, i użyj stwpro_automation_action_handlers, aby określić, która funkcja ją obsługuje. Wbudowane typy akcji to send_email, call_webhook i update_user_meta.

FiltrArgumentyCo robi
stwpro_automation_actions$actionsFiltruje listę typów akcji. Każdy element to klucz akcji i jej etykieta.
stwpro_automation_action_handlers$handlersFiltruje mapę typów akcji na obsługujące je funkcje. Funkcja obsługująca musi być wywoływalna. Jeśli Twój callback zwróci coś innego niż tablicę, wtyczka zignoruje to i zachowa wbudowane funkcje obsługujące.

WordPress wywoła Twoją funkcję obsługującą z pięcioma argumentami: aktywnymi automatyzacjami tego typu dla wyzwalacza, danymi automatyzacji, obiektem kontekstu wyzwalacza, wartością logiczną dla warunku kategorii produktu i tablicą dodatkowych parametrów.

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.
    }
}

Zmień odbiorcę wiadomości e-mail z automatyzacji

Dwa filtry ustawiają odbiorcę wiadomości e-mail. stwpro_automation_filter_email_to_customer jest wywoływany raz dla każdego właściciela listy życzeń dla wyzwalaczy „produkt w promocji” i „produkt ponownie w magazynie”. stwpro_automation_filter_email_to jest wywoływany dla wszystkich innych wyzwalaczy. W obu przypadkach pusty lub nieprawidłowy adres pomija wysłanie wiadomości e-mail.

FiltrArgumenty
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

Ten przykład wysyła wszystkie wiadomości e-mail z automatyzacji na adres testowy na stronie staging i pomija klientów, którzy zrezygnowali z subskrypcji:

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

Zmień zawartość i dane automatyzacji

Te cztery filtry przekazują wartość, którą filtrujesz jako pierwszą. Kolejne argumenty to rekord automatyzacji, ustawienia akcji, kontekst wyzwalacza, rozwiązane dane zmiennych i dodatkowe parametry. Działają one przed zastąpieniem tagów zmiennych przez wtyczkę, więc Twoje zmiany mogą nadal zawierać tagi, takie jak {customer_name}.

FiltrArgumentyCo filtruje
stwpro_automation_email_subject_template$subject_template, $automation, $action_data, $context_data, $data, $paramsSurowy temat wiadomości e-mail.
stwpro_automation_email_message_template$message_template, $automation, $action_data, $context_data, $data, $paramsSurowa treść wiadomości e-mail.
stwpro_automation_webhook_payload_template$payload_template, $automation, $action_data, $context_data, $data, $paramsSurowa ładunek webhooka.
stwpro_automation_usermeta_meta_value_template$meta_value, $automation, $action_data, $context_data, $data, $paramsSurowa wartość dla akcji aktualizacji metadanych użytkownika.

Trzy dodatkowe filtry mają własne argumenty:

FiltrArgumentyCo filtruje
stwpro_automation_variables$trigger_variables, $trigger_typeTagi zmiennych dostępne dla wyzwalacza.
stwpro_automation_webhook_recipes$recipesPrzepisy szybkiego startu webhooka.
stwpro_automations_get_all_automations$automations, $trigger_type, $action_typeAktywne automatyzacje dla typu wyzwalacza i akcji.

Dla danych zmiennych każdego wyzwalacza użyj jednego z tych filtrów. Wszystkie przekazują $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

Haczyki analityczne

Progi poziomu i segmentu klienta

Analizy klientów przypisują każdego najlepszego klienta do odpowiedniego poziomu. Klient osiąga poziom, gdy spełnione są oba warunki: liczba produktów na liście życzeń i całkowita wydana kwota. Wtyczka sprawdza poziomy od platynowego do brązowego, a klienci, którzy nie spełniają żadnych, są traktowani jako zwykli. Każdy filtr przyjmuje jeden argument, wartość domyślną, i zwraca liczbę.

PoziomFiltr liczby produktów na liście życzeńDomyślnieFiltr wydatkówDomyślnie
Platynowystwpro_admin_platinum_threshold8stwpro_admin_platinum_spent_threshold1500
Złotystwpro_admin_gold_threshold5stwpro_admin_gold_spent_threshold800
Srebrostwpro_admin_silver_threshold3stwpro_admin_silver_spent_threshold400
Brązstwpro_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;
} );

Inne filtry analityczne zmieniają segmenty klientów i listy wyświetlane na ekranach analitycznych:

FiltrArgumentyDomyślnieCo robi
stwpro_admin_vip_threshold$value5Liczba produktów na liście życzeń dla segmentu klientów VIP.
stwpro_admin_vip_spent_threshold$value800Całkowita kwota wydana dla segmentu klientów VIP.
stwpro_admin_inactive_days$value90Dni bez aktywności, po których klient jest uznawany za nieaktywnego.
stwpro_admin_top_wishlisters_limit$limit15Ile klientów zwraca lista najlepszych klientów z listą życzeń.
stwpro_admin_top_wishlisters_excluded_roles$excluded_rolesarray( 'administrator', 'shop_manager' )Role wykluczone z listy najlepszych klientów z listą życzeń.
stwpro_admin_customer_segments$segments, $total_customersBrakOstateczna lista segmentów klientów.

Dane analityczne, pamięć podręczna i odświeżanie

HookTyp i argumentyCo robi
stwpro_analytics_products_insight_dataFiltr: $products_insight, $requestZmienia dane zwracane przez trasę produktów-insight.
stwpro_analytics_products_insight_cache_durationFiltr: $secondsUstawia czas przechowywania tej odpowiedzi w pamięci podręcznej. Domyślnie jest to jedna godzina. Trasy dotyczące kategorii i marki, zaangażowania, trendów czasowych i zachowań klientów mają odpowiadające im filtry: stwpro_analytics_category_brand_insight_cache_duration, stwpro_analytics_engagement_insight_cache_duration, stwpro_analytics_timebased_trends_cache_duration i stwpro_analytics_customer_behavior_cache_duration.
stwpro_analytics_refresh_cooldownFiltr: $secondsUstawia liczbę sekund oczekiwania użytkownika między odświeżeniami. Domyślnie jest to 30. Zwróć 0, aby wyłączyć oczekiwanie.
stwpro_analytics_refreshedAkcja: $timestampUruchamiana po odświeżeniu, które czyści pamięć podręczną. Użyj jej do odbudowania własnych danych pochodnych.

Powyższe progi są odczytywane podczas obliczania analiz. Jeśli zmienisz jeden z nich, a ekran się nie zmieni, odśwież analizy, aby odbudować wyniki z pamięci podręcznej.

Domyślne haki list życzeń

Te haki kontrolują listy życzeń, które Pro automatycznie tworzy dla nowych użytkowników.

HookTyp i argumentyCo robi
stwpro_default_wishlists_sync_thresholdFiltr: $thresholdJeśli skonfigurowana lista zawiera więcej list życzeń niż ta liczba, Pro tworzy je w tle za pomocą Action Scheduler zamiast podczas rejestracji. Domyślnie jest to 3.
stwpro_default_wishlists_max_entriesFiltr: $maxMaksymalna liczba domyślnych list życzeń, które można zapisać na liście. Domyślnie jest to 20.
stwpro_after_seed_default_wishlistsAkcja: $user_id, $created, $listUruchamiana po tym, jak użytkownik otrzyma domyślne listy życzeń. $created to liczba utworzonych list życzeń. Nie uruchamia się, gdy żadna nie została utworzona.
add_action( 'stwpro_after_seed_default_wishlists', function ( $user_id, $created, $list ) {
    update_user_meta( $user_id, 'default_wishlists_created', $created );
}, 10, 3 );

Inne haki

HookTyp i argumentyCo robi
stwpro_wholesale_priceFiltr: $price, $product_id, $user, $user_wholesale_rolePozwala innemu wtyczce hurtowej dostarczyć cenę hurtową. Zwróć liczbę zmiennoprzecinkową, aby pominąć wyszukiwanie Cen hurtowych. Zwróć false, aby użyć domyślnego wyszukiwania.
stwpro_disable_abilitiesFiltr: $disabledZwróć true, aby zapobiec rejestrowaniu przez Pro jego możliwości. Możesz również zdefiniować stałą STWPRO_DISABLE_ABILITIES jako true.
stwpro_show_powered_by_in_emailFiltr: $showZwróć false, aby usunąć linię „Powered by SaveTo Wishlist” z wiadomości e-mail wysyłanych przez Pro.
stwpro_wishlist_createdAkcja: $wishlist_data, $wishlist_itemsUruchamiane, gdy prawidłowe żądanie POST dotrze do trasy webhook /webhook/wishlist-created.
add_filter( 'stwpro_show_powered_by_in_email', '__return_false' );

Często zadawane pytania

Czy mogę wywoływać trasy analityczne lub automatyzacji spoza WordPress?
Tylko jako zalogowany administrator. Te trasy sprawdzają uprawnienia manage_options i obsługują własne ekrany wtyczki, więc korzystaj z powyższych haków do wszystkiego, co musi pozostać stabilne. W przypadku zewnętrznych systemów użyj trasy webhook z kluczem API.

Dlaczego moje zmiany progów nie wyświetlają się na ekranie analityki?
Wyniki analityki są buforowane, domyślnie przez godzinę. Odśwież analitykę lub skróć czas buforowania za pomocą filtrów czasu buforowania, a nowe progi zaczną obowiązywać.

Potrzebujesz pomocy?

Jeśli masz pytanie lub napotkasz jakiekolwiek problemy, jesteśmy tutaj, aby pomóc.

Czy ten artykuł był pomocny?

Powiązane artykuły

Potrzebujesz wsparcia?

Nie możesz znaleźć odpowiedzi, której szukasz?
Skontaktuj się z pomocą techniczną
Dokończ zakup