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.
| Route | Methode | Wie kan het aanroepen | Wat het doet |
|---|---|---|---|
/analytics/products-insight | GET | Beheerders, beperkt door limiet | Retourneert meest populaire, trending en recent toegevoegde producten. Accepteert period met de waarde 7days of 30days. De standaardwaarde is 7days. |
/analytics/category-brand-insight | GET | Beheerders, beperkt door limiet | Retourneert categorie- en merkinzichten. |
/analytics/engagement-insight | GET | Beheerders, beperkt door limiet | Retourneert inzichten in de betrokkenheid van producten. |
/analytics/timebased-trends | GET | Beheerders, beperkt door limiet | Retourneert trends over tijd. Accepteert range met de waarde 7days, 30days, 90days of 365days. De standaardwaarde is 30days. |
/analytics/customer-behavior | GET | Beheerders, beperkt door limiet | Retourneert inzichten in klantgedrag, inclusief top-wishlisters en klantsegmenten. |
/analytics/refresh | POST | Beheerders | Wist 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.
| Route | Methode | Wat het doet |
|---|---|---|
/automations/get-automations | GET | Retourneert opgeslagen automatiseringen. Queryparameters worden gebruikt als filters. |
/automations/save-automation | POST | Maakt of werkt een automatisering bij. Het leest id, trigger_type, action_type, status, description en action_data. |
/automations/delete-automation | DELETE | Verwijdert de automatisering met de ID in de id-parameter. Retourneert een 400-fout wanneer de ID leeg is. |
/automations/send-test-email | POST | Verstuurt 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.
| Route | Methode | Wat het doet |
|---|---|---|
/default-wishlists/settings | GET, POST | Leest of slaat de standaard verlanglijst-instellingen op. Het POST-verzoek leest de list-parameter. |
/default-wishlists/migration-status | GET | Retourneert 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-migration | POST | Start die taak. |
/default-wishlists/cancel-migration | POST | Annuleert 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
| Filter | Argumenten | Wat het doet |
|---|---|---|
stwpro_api_admin_permissions_check | $response, $request | Filtreert 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, $request | Filtreert het resultaat van de API-sleutelcontrole op de webhook-route. |
stwpro_api_rate_limit | $limit, $request, $is_read | Stelt 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, $request | Filtreert 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.
| Filter | Argumenten | Wat het doet |
|---|---|---|
stwpro_automation_actions | $actions | Filtreert de lijst met actietypen. Elk item is een actiesleutel en het bijbehorende label. |
stwpro_automation_action_handlers | $handlers | Filtreert 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.
| Filter | Argumenten |
|---|---|
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}.
| Filter | Argumenten | Wat het filtert |
|---|---|---|
stwpro_automation_email_subject_template | $subject_template, $automation, $action_data, $context_data, $data, $params | Het ruwe e-mailonderwerp. |
stwpro_automation_email_message_template | $message_template, $automation, $action_data, $context_data, $data, $params | De ruwe e-mailinhoud. |
stwpro_automation_webhook_payload_template | $payload_template, $automation, $action_data, $context_data, $data, $params | De ruwe webhook-payload. |
stwpro_automation_usermeta_meta_value_template | $meta_value, $automation, $action_data, $context_data, $data, $params | De ruwe waarde voor de actie 'gebruikersmeta bijwerken'. |
Drie extra filters hebben hun eigen argumenten:
| Filter | Argumenten | Wat het filtert |
|---|---|---|
stwpro_automation_variables | $trigger_variables, $trigger_type | De variabeletags die beschikbaar zijn voor een trigger. |
stwpro_automation_webhook_recipes | $recipes | De snelle startrecepten voor webhooks. |
stwpro_automations_get_all_automations | $automations, $trigger_type, $action_type | De 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_createdstwpro_automation_data_item_added_to_wishliststwpro_automation_data_item_removed_from_wishliststwpro_automation_data_product_on_salestwpro_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.
| Niveau | Filter voor aantal op verlanglijst | Standaard | Filter voor besteed bedrag | Standaard |
|---|---|---|---|---|
| Platinum | stwpro_admin_platinum_threshold | 8 | stwpro_admin_platinum_spent_threshold | 1500 |
| Goud | stwpro_admin_gold_threshold | 5 | stwpro_admin_gold_spent_threshold | 800 |
| Zilver | stwpro_admin_silver_threshold | 3 | stwpro_admin_silver_spent_threshold | 400 |
| Brons | stwpro_admin_bronze_threshold | 2 | stwpro_admin_bronze_spent_threshold | 200 |
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:
| Filter | Argumenten | Standaard | Wat het doet |
|---|---|---|---|
stwpro_admin_vip_threshold | $value | 5 | Aantal items op de verlanglijst voor het VIP-klantensegment. |
stwpro_admin_vip_spent_threshold | $value | 800 | Totaal besteed bedrag voor het VIP-klantensegment. |
stwpro_admin_inactive_days | $value | 90 | Dagen zonder activiteit voordat een klant als inactief wordt beschouwd. |
stwpro_admin_top_wishlisters_limit | $limit | 15 | Hoeveel klanten de lijst met top-wishlisters retourneert. |
stwpro_admin_top_wishlisters_excluded_roles | $excluded_roles | array( 'administrator', 'shop_manager' ) | Rollen die zijn uitgesloten van de lijst met top-wishlisters. |
stwpro_admin_customer_segments | $segments, $total_customers | Geen | De definitieve lijst met klantsegmenten. |
Analysedata, cache en vernieuwen
| Hook | Type en argumenten | Wat het doet |
|---|---|---|
stwpro_analytics_products_insight_data | Filter: $products_insight, $request | Wijzigt de gegevens die de products-insight-route retourneert. |
stwpro_analytics_products_insight_cache_duration | Filter: $seconds | Stelt 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_cooldown | Filter: $seconds | Stelt 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_refreshed | Actie: $timestamp | Wordt 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.
| Hook | Type en argumenten | Wat het doet |
|---|---|---|
stwpro_default_wishlists_sync_threshold | Filter: $threshold | Als 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_entries | Filter: $max | Het maximum aantal standaardverlanglijsten dat u in de lijst kunt opslaan. De standaardwaarde is 20. |
stwpro_after_seed_default_wishlists | Actie: $user_id, $created, $list | Wordt 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
| Hook | Type en argumenten | Wat het doet |
|---|---|---|
stwpro_wholesale_price | Filter: $price, $product_id, $user, $user_wholesale_role | Laat 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_abilities | Filter: $disabled | Retourneer 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_email | Filter: $show | Retourneer false om de regel “Powered by SaveTo Wishlist” te verwijderen uit e-mails die door Pro worden verzonden. |
stwpro_wishlist_created | Actie: $wishlist_data, $wishlist_items | Wordt 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.
- Premium gebruikers: Open een supportticket
- Gratis gebruikers: Bezoek ons communityforum
