SaveTo Wishlist voor WooCommerce
Aan de slag
Hoe SaveTo Wishlist Pro uit te breiden met hooks en de REST API - SaveTo Wishlist
  1. Home
  2. Kennisbank
  3. Wenslijst
  4. Ontwikkelaarsgidsen
  5. Hoe breid je SaveTo Wishlist Pro uit met hooks en de REST API
  1. Home
  2. Kennisbank
  3. Wenslijst
  4. Hoe breid je SaveTo Wishlist Pro uit met hooks en de REST API

Hoe breid je SaveTo Wishlist Pro uit met hooks en de REST API

Moet u wijzigen hoe SaveTo Wishlist Pro werkt zonder de plugin te bewerken? U kunt dit doen met WordPress-hooks en de REST API van de plugin. Dit artikel bevat de hooks en routes die u kunt gebruiken, met de argumenten die elke hook doorgeeft en korte PHP-voorbeelden. Alles hier is van toepassing op SaveTo Wishlist Pro 1.0.4.

Voordat u begint

SaveTo Wishlist Pro draait bovenop SaveTo Wishlist Lite, dus beide plugins moeten actief zijn. Plaats uw hook-code in een kleine aangepaste plugin of een must-use plugin, niet in de SaveTo Wishlist Pro-bestanden, omdat plugin-updates die bestanden vervangen.

Elke Pro hook-naam begint met stwpro_. De hooks voor de gratis plugin worden behandeld in Hoe SaveTo Wishlist uit te breiden met hooks en de REST API.

De onderstaande hooks en filters worden vermeld met de argumenten die ze doorgeven. Wanneer u een filter toevoegt, stel dan het aantal geaccepteerde argumenten dienovereenkomstig in, anders geeft WordPress u slechts het eerste argument door. Geef het eerste argument (of een gewijzigde kopie ervan) terug van elke filter.

REST API-routes

Alle SaveTo Wishlist Pro-routes gebruiken de naamruimte saveto-wishlist-pro/v1, dus de volledige URL ziet eruit als https://example.com/wp-json/saveto-wishlist-pro/v1/analytics/products-insight.

Wie kan de routes aanroepen

De routes voor analyses, automatiseringen, standaard wishlists en licenties bedienen de eigen admin-schermen van de plugin en kunnen veranderen. Ze beantwoorden alleen verzoeken van een ingelogde gebruiker met de manage_options-mogelijkheid (standaard beheerders). Iedereen anders krijgt een 401- of 403-fout. Stuur het verzoek met een normale WordPress-login-sessie en een REST nonce, of met een andere REST-authenticatiemethode die uw site ondersteunt.

De analyse-leesroutes, de automatiseringsroutes en de licentie-routes hebben ook een limiet per gebruiker. Leesverzoeken (GET) krijgen 300 verzoeken per minuut. Alle andere methoden krijgen 60 verzoeken per minuut. Wanneer u de limiet overschrijdt, retourneert de route een 429-fout met de code rate_limit_exceeded. U kunt de limieten wijzigen met de stwpro_api_rate_limit-filter, hieronder behandeld.

Analyse-routes

Het basispad is /analytics.

RouteMethodeWie kan het aanroepenWat het doet
/analytics/products-insightGETBeheerders, beperkt door limietRetourneert meest populaire, trending en recent toegevoegde producten. Accepteert period met de waarde 7days of 30days. De standaardwaarde is 7days.
/analytics/category-brand-insightGETBeheerders, beperkt door limietRetourneert categorie- en merkinzichten.
/analytics/engagement-insightGETBeheerders, beperkt door limietRetourneert inzichten in de betrokkenheid van producten.
/analytics/timebased-trendsGETBeheerders, beperkt door limietRetourneert trends over tijd. Accepteert range met de waarde 7days, 30days, 90days of 365days. De standaardwaarde is 30days.
/analytics/customer-behaviorGETBeheerders, beperkt door limietRetourneert inzichten in klantgedrag, inclusief top-wishlisters en klantsegmenten.
/analytics/refreshPOSTBeheerdersWist de analytics-caches. Een gebruiker kan eens per 30 seconden vernieuwen. Een snellere aanvraag retourneert een 429-fout met de code cooldown_active.

De analytics-antwoorden worden standaard één uur lang in de cache opgeslagen. Een succesvolle aanroep naar /analytics/refresh wist de cache, zodat de volgende leesactie verse gegevens retourneert.

Dit voorbeeld leest de trending producten van de afgelopen 30 dagen uit de browser, in een script dat wordt uitgevoerd op een WordPress-beheerscherm:

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

Automatisering-routes

Het basispad is /automations. Alle vier de routes vereisen een beheerder en zijn beperkt in hun snelheid.

RouteMethodeWat het doet
/automations/get-automationsGETRetourneert opgeslagen automatiseringen. Queryparameters worden gebruikt als filters.
/automations/save-automationPOSTMaakt of werkt een automatisering bij. Het leest id, trigger_type, action_type, status, description en action_data.
/automations/delete-automationDELETEVerwijdert de automatisering met de ID in de id-parameter. Retourneert een 400-fout wanneer de ID leeg is.
/automations/send-test-emailPOSTVerstuurt een test-e-mail met dummygegevens. Het leest email_to, email_subject en email_body.

Standaard verlanglijst-routes

Het basispad is /default-wishlists. Alle routes vereisen een beheerder.

RouteMethodeWat het doet
/default-wishlists/settingsGET, POSTLeest of slaat de standaard verlanglijst-instellingen op. Het POST-verzoek leest de list-parameter.
/default-wishlists/migration-statusGETRetourneert de voortgang van de taak die standaard verlanglijsten aanmaakt voor bestaande gebruikers die er geen hebben, en hoeveel gebruikers nog in aanmerking komen.
/default-wishlists/start-migrationPOSTStart die taak.
/default-wishlists/cancel-migrationPOSTAnnuleert die taak.

Webhook-route

De route /webhook/wishlist-created verschilt van de andere. Het gebruikt geen WordPress-login. Het gebruikt de webhook API-sleutel, verzonden in de x-api-key-header of de api_key-queryparameter, en antwoordt met 401 als de sleutel ontbreekt of onjuist is. Een POST-verzoek activeert de stwpro_wishlist_created-actie. Een GET-verzoek met een wishlist_id-parameter retourneert een openbare, gepubliceerde verlanglijst. Lees voor installatie- en beveiligingsdetails Hoe externe tools te verbinden met behulp van verlanglijst webhooks en Hoe de SaveTo Wishlist Pro webhook API-endpoint te beveiligen.

Filters voor de route-permissies

FilterArgumentenWat het doet
stwpro_api_admin_permissions_check$response, $requestFiltreert het resultaat van de administratorcontrole op de routes die alleen voor beheerders zijn. Retourneer true om toe te staan, of een WP_Error om te weigeren.
stwpro_webhook_permissions_check$response, $requestFiltreert het resultaat van de API-sleutelcontrole op de webhook-route.
stwpro_api_rate_limit$limit, $request, $is_readStelt het aantal verzoeken in dat per minuut is toegestaan. De standaardwaarden zijn 300 voor leesverzoeken en 60 voor de rest.
stwpro_api_rate_limit_check$result, $requestFiltreert het uiteindelijke resultaat van de rate limit-controle.

Dit verhoogt bijvoorbeeld de schrijflimiet naar 120 verzoeken per minuut:

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

Automatisering-hooks

Automatiseringen verbinden een trigger, zoals een product dat in de uitverkoop gaat, met een actie, zoals het verzenden van een e-mail. Met deze hooks kunt u uw eigen acties toevoegen en wijzigen wat de ingebouwde acties verzenden.

Voeg uw eigen automatiseringsactie toe

Twee filters werken samen. Gebruik stwpro_automation_actions om uw actie toe te voegen aan de lijst met acties, en gebruik stwpro_automation_action_handlers om aan te geven welke functie deze uitvoert. De ingebouwde actietypen zijn send_email, call_webhook en update_user_meta.

FilterArgumentenWat het doet
stwpro_automation_actions$actionsFiltreert de lijst met actietypen. Elk item is een actiesleutel en het bijbehorende label.
stwpro_automation_action_handlers$handlersFiltreert de map van actietype naar handler. De handler moet aanroepbaar zijn. Als uw callback iets anders retourneert dan een array, negeert de plugin dit en behoudt de ingebouwde handlers.

WordPress roept uw handler aan met vijf argumenten: de actieve automatiseringen van dat type voor de trigger, de automatiseringsgegevens, het triggercontextobject, een boolean voor de productcategorievoorwaarde en een array met extra parameters.

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

Wijzig de ontvanger van een automatiserings-e-mail

Twee filters bepalen de e-mailontvanger. stwpro_automation_filter_email_to_customer wordt één keer per wishlist-eigenaar uitgevoerd voor de triggers 'product in de uitverkoop' en 'product weer op voorraad'. stwpro_automation_filter_email_to wordt uitgevoerd voor elke andere trigger. Bij beide filters wordt een lege of ongeldige adres overgeslagen.

FilterArgumenten
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

Dit voorbeeld stuurt elke automatiserings-e-mail naar een testadres op een staging-site en slaat klanten over die zich hebben afgemeld:

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

Automatiseringsinhoud en -gegevens wijzigen

Deze vier filters passen de waarde die je eerst filtert. De volgende argumenten zijn het automatiseringsrecord, de actie-instellingen, de triggercontext, de opgeloste variabelegegevens en de extra parameters. Ze worden uitgevoerd voordat de plugin de variabeletags vervangt, dus je wijzigingen kunnen nog steeds tags bevatten zoals {customer_name}.

FilterArgumentenWat het filtert
stwpro_automation_email_subject_template$subject_template, $automation, $action_data, $context_data, $data, $paramsHet ruwe e-mailonderwerp.
stwpro_automation_email_message_template$message_template, $automation, $action_data, $context_data, $data, $paramsDe ruwe e-mailinhoud.
stwpro_automation_webhook_payload_template$payload_template, $automation, $action_data, $context_data, $data, $paramsDe ruwe webhook-payload.
stwpro_automation_usermeta_meta_value_template$meta_value, $automation, $action_data, $context_data, $data, $paramsDe ruwe waarde voor de actie 'gebruikersmeta bijwerken'.

Drie extra filters hebben hun eigen argumenten:

FilterArgumentenWat het filtert
stwpro_automation_variables$trigger_variables, $trigger_typeDe variabeletags die beschikbaar zijn voor een trigger.
stwpro_automation_webhook_recipes$recipesDe snelle startrecepten voor webhooks.
stwpro_automations_get_all_automations$automations, $trigger_type, $action_typeDe actieve automatiseringen voor een trigger- en actietype.

Gebruik voor de variabelegegevens van elke trigger een van deze filters. Ze passen allemaal $variable_data, $trigger_type, $context_data door.

  • 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

Klantniveau- en segmentdrempels

De klantanalyses plaatsen elke top-wisher in een niveau. Een klant bereikt een niveau wanneer aan beide cijfers is voldaan: het aantal op de verlanglijst en het totale bestede bedrag. De plugin controleert de niveaus van platina naar brons, en klanten die geen van beide halen, zijn regulier. Elke filter neemt één argument, de standaardwaarde, en retourneert een getal.

NiveauFilter voor aantal op verlanglijstStandaardFilter voor besteed bedragStandaard
Platinumstwpro_admin_platinum_threshold8stwpro_admin_platinum_spent_threshold1500
Goudstwpro_admin_gold_threshold5stwpro_admin_gold_spent_threshold800
Zilverstwpro_admin_silver_threshold3stwpro_admin_silver_spent_threshold400
Bronsstwpro_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 analyticsfilters wijzigen de klantsegmenten en de lijsten die op de analyticschermen worden weergegeven:

FilterArgumentenStandaardWat het doet
stwpro_admin_vip_threshold$value5Aantal items op de verlanglijst voor het VIP-klantensegment.
stwpro_admin_vip_spent_threshold$value800Totaal besteed bedrag voor het VIP-klantensegment.
stwpro_admin_inactive_days$value90Dagen zonder activiteit voordat een klant als inactief wordt beschouwd.
stwpro_admin_top_wishlisters_limit$limit15Hoeveel klanten de lijst met top-wishlisters retourneert.
stwpro_admin_top_wishlisters_excluded_roles$excluded_rolesarray( 'administrator', 'shop_manager' )Rollen die zijn uitgesloten van de lijst met top-wishlisters.
stwpro_admin_customer_segments$segments, $total_customersGeenDe definitieve lijst met klantsegmenten.

Analysedata, cache en vernieuwen

HookType en argumentenWat het doet
stwpro_analytics_products_insight_dataFilter: $products_insight, $requestWijzigt de gegevens die de products-insight-route retourneert.
stwpro_analytics_products_insight_cache_durationFilter: $secondsStelt in hoe lang die respons wordt gecached. De standaardwaarde is één uur. De routes voor categorie en merk, engagement, tijdsgebonden trends en klantgedrag hebben overeenkomstige filters: stwpro_analytics_category_brand_insight_cache_duration, stwpro_analytics_engagement_insight_cache_duration, stwpro_analytics_timebased_trends_cache_duration en stwpro_analytics_customer_behavior_cache_duration.
stwpro_analytics_refresh_cooldownFilter: $secondsStelt het aantal seconden in dat een gebruiker wacht tussen vernieuwingen. De standaardwaarde is 30. Geef 0 terug om het wachten uit te schakelen.
stwpro_analytics_refreshedActie: $timestampWordt uitgevoerd na een vernieuwing die de caches leegmaakt. Gebruik het om uw eigen afgeleide gegevens opnieuw op te bouwen.

De bovengenoemde drempels worden gelezen wanneer de analyses worden berekend. Als u er een wijzigt en het scherm niet verandert, vernieuw de analyses zodat de gecachte resultaten opnieuw worden opgebouwd.

Standaard verlanglijst-hooks

Deze hooks besturen de verlanglijsten die Pro automatisch aanmaakt voor nieuwe gebruikers.

HookType en argumentenWat het doet
stwpro_default_wishlists_sync_thresholdFilter: $thresholdAls de geconfigureerde lijst meer verlanglijsten heeft dan dit aantal, maakt Pro ze op de achtergrond aan met Action Scheduler in plaats van tijdens registratie. De standaardwaarde is 3.
stwpro_default_wishlists_max_entriesFilter: $maxHet maximum aantal standaardverlanglijsten dat u in de lijst kunt opslaan. De standaardwaarde is 20.
stwpro_after_seed_default_wishlistsActie: $user_id, $created, $listWordt uitgevoerd nadat een gebruiker de standaardverlanglijsten heeft ontvangen. $created is het aantal aangemaakte verlanglijsten. Het wordt niet uitgevoerd als er geen zijn aangemaakt.
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

HookType en argumentenWat het doet
stwpro_wholesale_priceFilter: $price, $product_id, $user, $user_wholesale_roleLaat een andere groothandelsplugin de groothandelsprijs leveren. Geef een float terug om de Wholesale Prices-opzoekactie over te slaan. Geef false terug om de standaard opzoekactie te gebruiken.
stwpro_disable_abilitiesFilter: $disabledRetourneer true om te voorkomen dat Pro zijn functionaliteiten registreert. Je kunt ook de constante STWPRO_DISABLE_ABILITIES als true definiëren.
stwpro_show_powered_by_in_emailFilter: $showRetourneer false om de regel “Powered by SaveTo Wishlist” te verwijderen uit e-mails die door Pro worden verzonden.
stwpro_wishlist_createdActie: $wishlist_data, $wishlist_itemsWordt uitgevoerd wanneer een geldige POST-aanvraag de webhook-route /webhook/wishlist-created bereikt.
add_filter( 'stwpro_show_powered_by_in_email', '__return_false' );

Veelgestelde vragen

Kan ik de analytics- of automatiseringsroutes aanroepen vanaf buiten WordPress?
Alleen als ingelogde beheerder. Deze routes controleren op de manage_options-mogelijkheid en bedienen de eigen schermen van de plugin, dus bouw voort op de bovenstaande hooks voor alles wat stabiel moet blijven. Gebruik voor externe systemen de webhook-route met zijn API-sleutel.

Waarom worden mijn drempelwijzigingen niet weergegeven op het analytics-scherm?
De analytics-resultaten worden standaard één uur lang in de cache opgeslagen. Vernieuw de analytics, of verkort de cache met de filters voor de cacheduur, en de nieuwe drempels worden toegepast.

Hulp nodig?

Als u een vraag heeft of tegen problemen aanloopt, staan we klaar om u te helpen.

Was dit artikel nuttig?

Gerelateerde Artikelen

Ondersteuning nodig?

Kunt u het antwoord dat u zoekt niet vinden?
Neem contact op met ondersteuning
Voltooi Uw Aankoop