SaveTo Wishlist per WooCommerce
Inizia
Come estendere SaveTo Wishlist Pro con hook e la REST API - SaveTo Wishlist
  1. Casa
  2. Knowledge Base
  3. Lista dei desideri
  4. Guide per sviluppatori
  5. Come estendere SaveTo Wishlist Pro con hook e la REST API
  1. Casa
  2. Knowledge Base
  3. Lista dei desideri
  4. Come estendere SaveTo Wishlist Pro con hook e la REST API

Come estendere SaveTo Wishlist Pro con hook e la REST API

Hai bisogno di cambiare il modo in cui SaveTo Wishlist Pro si comporta senza modificare il plugin? Puoi farlo con gli hook di WordPress e l'API REST del plugin. Questo articolo elenca gli hook e le route che puoi utilizzare, con gli argomenti che ciascuno passa e brevi esempi PHP. Tutto ciò che è qui si applica a SaveTo Wishlist Pro 1.0.4.

Prima di iniziare

SaveTo Wishlist Pro si basa su SaveTo Wishlist Lite, quindi entrambi i plugin devono essere attivi. Inserisci il tuo codice di hook in un piccolo plugin personalizzato o in un plugin must-use, non nei file di SaveTo Wishlist Pro, perché gli aggiornamenti del plugin sostituiscono quei file.

Ogni nome di hook Pro inizia con stwpro_. Gli hook per il plugin gratuito sono trattati in Come estendere SaveTo Wishlist con hook e la REST API.

Gli hook e i filtri seguenti sono elencati con gli argomenti che passano. Quando aggiungi un filtro, imposta il numero di argomenti accettati in modo che corrisponda, altrimenti WordPress ti passerà solo il primo argomento. Restituisci il primo argomento (o una sua copia modificata) da ogni filtro.

Route dell'API REST

Tutte le route di SaveTo Wishlist Pro utilizzano lo spazio dei nomi saveto-wishlist-pro/v1, quindi l'URL completo appare come https://example.com/wp-json/saveto-wishlist-pro/v1/analytics/products-insight.

Chi può chiamare le route

Le route di analisi, automazione, wishlist predefinite e licenza servono le schermate di amministrazione del plugin e potrebbero cambiare. Rispondono solo alle richieste di un utente connesso che ha la capacità manage_options (amministratori per impostazione predefinita). Chiunque altro riceve un errore 401 o 403. Invia la richiesta con una normale sessione di accesso a WordPress e un nonce REST, o con qualsiasi altro metodo di autenticazione REST supportato dal tuo sito.

Le route di lettura delle analisi, le route delle automazioni e le route delle licenze hanno anche un limite di frequenza per utente. Le richieste di lettura (GET) ottengono 300 richieste al minuto. Tutti gli altri metodi ottengono 60 richieste al minuto. Quando superi il limite, la route restituisce un errore 429 con il codice rate_limit_exceeded. Puoi modificare i limiti con il filtro stwpro_api_rate_limit, trattato di seguito.

Route di analisi

Il percorso di base è /analytics.

RouteMetodoChi può chiamarloCosa fa
/analytics/products-insightGETAmministratori, con limite di frequenzaRestituisce i prodotti più popolari, di tendenza e aggiunti di recente. Accetta period con il valore 7days o 30days. Il valore predefinito è 7days.
/analytics/category-brand-insightGETAmministratori, con limite di frequenzaRestituisce insight su categorie e marchi.
/analytics/engagement-insightGETAmministratori, con limite di frequenzaRestituisce insight sull'engagement per i prodotti.
/analytics/timebased-trendsGETAmministratori, con limite di frequenzaRestituisce trend nel tempo. Accetta range con il valore 7days, 30days, 90days o 365days. Il valore predefinito è 30days.
/analytics/customer-behaviorGETAmministratori, con limite di frequenzaRestituisce insight sul comportamento dei clienti, inclusi i migliori wishlist e i segmenti di clienti.
/analytics/refreshPOSTAmministratoriCancella le cache di analytics. Un utente può aggiornare una volta ogni 30 secondi. Una richiesta più veloce restituisce un errore 429 con il codice cooldown_active.

Le risposte di analytics vengono memorizzate nella cache per un'ora per impostazione predefinita. Una chiamata riuscita a /analytics/refresh cancella la cache, quindi la lettura successiva restituisce dati aggiornati.

Questo esempio legge i prodotti di tendenza degli ultimi 30 giorni dal browser, in uno script che viene eseguito in una schermata di amministrazione di 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 );
} );

Percorsi di automazione

Il percorso di base è /automations. Tutti e quattro i percorsi richiedono un amministratore e sono soggetti a limitazione della frequenza.

RouteMetodoCosa fa
/automations/get-automationsGETRestituisce le automazioni salvate. I parametri di query vengono utilizzati come filtri.
/automations/save-automationPOSTCrea o aggiorna un'automazione. Legge id, trigger_type, action_type, status, description e action_data.
/automations/delete-automationDELETEElimina l'automazione con l'ID nel parametro id. Restituisce un errore 400 quando l'ID è vuoto.
/automations/send-test-emailPOSTInvia un'email di prova con dati fittizi. Legge email_to, email_subject e email_body.

Percorsi delle wishlist predefinite

Il percorso di base è /default-wishlists. Tutti i percorsi richiedono un amministratore.

RouteMetodoCosa fa
/default-wishlists/settingsGET, POSTLegge o salva le impostazioni della wishlist predefinita. La richiesta POST legge il parametro list.
/default-wishlists/migration-statusGETRestituisce lo stato di avanzamento del processo che crea le wishlist predefinite per gli utenti esistenti che non ne hanno, e quanti utenti sono ancora idonei.
/default-wishlists/start-migrationPOSTAvvia quel processo.
/default-wishlists/cancel-migrationPOSTAnnulla quel processo.

Percorso Webhook

Il percorso /webhook/wishlist-created è diverso dagli altri. Non utilizza un login di WordPress. Utilizza la chiave API webhook, inviata nell'intestazione x-api-key o nel parametro di query api_key, e risponde con 401 quando la chiave è mancante o errata. Una richiesta POST attiva l'azione stwpro_wishlist_created. Una richiesta GET con un parametro wishlist_id restituisce una wishlist pubblica e pubblicata. Per dettagli su configurazione e sicurezza, leggi Come connettere strumenti esterni utilizzando i webhook delle wishlist e Come proteggere l'endpoint API webhook di SaveTo Wishlist Pro.

Filtri per le autorizzazioni del percorso

FiltroArgomentiCosa fa
stwpro_api_admin_permissions_check$response, $requestFiltra il risultato del controllo amministratore sulle route riservate agli amministratori. Restituisce true per consentire, o un WP_Error per negare.
stwpro_webhook_permissions_check$response, $requestFiltra il risultato del controllo della chiave API sulla route webhook.
stwpro_api_rate_limit$limit, $request, $is_readImposta le richieste consentite al minuto. I valori predefiniti sono 300 per le richieste di lettura e 60 per le altre.
stwpro_api_rate_limit_check$result, $requestFiltra il risultato finale del controllo del limite di richieste.

Ad esempio, questo aumenta il limite di scrittura a 120 richieste al minuto:

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

Hook di automazione

Le automazioni collegano un trigger, come un prodotto in saldo, a un'azione, come l'invio di un'email. Questi hook ti consentono di aggiungere le tue azioni e modificare ciò che le azioni integrate inviano.

Aggiungi la tua azione di automazione

Due filtri lavorano insieme. Usa stwpro_automation_actions per aggiungere la tua azione all'elenco delle azioni e usa stwpro_automation_action_handlers per specificare quale funzione la esegue. I tipi di azione integrati sono send_email, call_webhook e update_user_meta.

FiltroArgomentiCosa fa
stwpro_automation_actions$actionsFiltra l'elenco dei tipi di azione. Ogni elemento è una chiave di azione e la sua etichetta.
stwpro_automation_action_handlers$handlersFiltra la mappa dei tipi di azione agli handler. L'handler deve essere richiamabile. Se il tuo callback restituisce qualcosa di diverso da un array, il plugin lo ignora e mantiene gli handler integrati.

WordPress chiama il tuo handler con cinque argomenti: le automazioni attive di quel tipo per il trigger, i dati dell'automazione, l'oggetto contesto del trigger, un booleano per la condizione della categoria del prodotto e un array di parametri aggiuntivi.

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

Cambia chi riceve un'email di automazione

Due filtri impostano il destinatario dell'email. stwpro_automation_filter_email_to_customer viene eseguito una volta per proprietario della wishlist per il prodotto in saldo e i trigger di prodotto nuovamente disponibile. stwpro_automation_filter_email_to viene eseguito per tutti gli altri trigger. Con entrambi i filtri, un indirizzo vuoto o non valido salta l'email.

FiltroArgomenti
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

Questo esempio invia ogni email di automazione a un indirizzo di test su un sito di staging ed esclude i clienti che hanno scelto di non ricevere comunicazioni:

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

Cambia il contenuto e i dati dell'automazione

Questi quattro filtri passano il valore che filtri per primo. Gli argomenti successivi sono il record di automazione, le impostazioni dell'azione, il contesto del trigger, i dati delle variabili risolti e i parametri aggiuntivi. Vengono eseguiti prima che il plugin sostituisca i tag delle variabili, quindi le tue modifiche possono ancora contenere tag come {customer_name}.

FiltroArgomentiCosa filtra
stwpro_automation_email_subject_template$subject_template, $automation, $action_data, $context_data, $data, $paramsL'oggetto email grezzo.
stwpro_automation_email_message_template$message_template, $automation, $action_data, $context_data, $data, $paramsIl messaggio email grezzo.
stwpro_automation_webhook_payload_template$payload_template, $automation, $action_data, $context_data, $data, $paramsIl payload webhook grezzo.
stwpro_automation_usermeta_meta_value_template$meta_value, $automation, $action_data, $context_data, $data, $paramsIl valore grezzo per l'azione di aggiornamento dei metadati utente.

Altri tre filtri hanno i propri argomenti:

FiltroArgomentiCosa filtra
stwpro_automation_variables$trigger_variables, $trigger_typeI tag delle variabili disponibili per un trigger.
stwpro_automation_webhook_recipes$recipesLe ricette rapide per webhook.
stwpro_automations_get_all_automations$automations, $trigger_type, $action_typeLe automazioni attive per un tipo di trigger e azione.

Per i dati delle variabili di ciascun trigger, usa uno di questi filtri. Tutti passano $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

Hook di analisi

Soglie di livello e segmento del cliente

L'analisi dei clienti inserisce ogni top wishlister in un livello. Un cliente raggiunge un livello quando entrambi i numeri sono soddisfatti: il conteggio della wishlist e l'importo totale speso. Il plugin controlla i livelli dal platino al bronzo e i clienti che non soddisfano nessuno sono regolari. Ogni filtro accetta un argomento, il valore predefinito, e restituisce un numero.

LivelloFiltro conteggio wishlistPredefinitoFiltro spesaPredefinito
Platinostwpro_admin_platinum_threshold8stwpro_admin_platinum_spent_threshold1500
Orostwpro_admin_gold_threshold5stwpro_admin_gold_spent_threshold800
Argentostwpro_admin_silver_threshold3stwpro_admin_silver_spent_threshold400
Bronzostwpro_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;
} );

Altri filtri di analisi modificano i segmenti dei clienti e gli elenchi mostrati nelle schermate di analisi:

FiltroArgomentiPredefinitoCosa fa
stwpro_admin_vip_threshold$value5Conteggio wishlist per il segmento clienti VIP.
stwpro_admin_vip_spent_threshold$value800Spesa totale per il segmento clienti VIP.
stwpro_admin_inactive_days$value90Giorni di inattività prima che un cliente venga considerato inattivo.
stwpro_admin_top_wishlisters_limit$limit15Quanti clienti restituisce l'elenco dei top wishlister.
stwpro_admin_top_wishlisters_excluded_roles$excluded_rolesarray( 'administrator', 'shop_manager' )Ruoli esclusi dall'elenco dei top wishlister.
stwpro_admin_customer_segments$segments, $total_customersNessunoL'elenco finale dei segmenti di clienti.

Dati di analisi, cache e aggiornamento

HookTipo e argomentiCosa fa
stwpro_analytics_products_insight_dataFiltro: $products_insight, $requestModifica i dati restituiti dal percorso products-insight.
stwpro_analytics_products_insight_cache_durationFiltro: $secondsImposta per quanto tempo viene memorizzata nella cache la risposta. L'impostazione predefinita è un'ora. I percorsi relativi a categorie e marchi, coinvolgimento, tendenze basate sul tempo e comportamento dei clienti hanno filtri corrispondenti: stwpro_analytics_category_brand_insight_cache_duration, stwpro_analytics_engagement_insight_cache_duration, stwpro_analytics_timebased_trends_cache_duration e stwpro_analytics_customer_behavior_cache_duration.
stwpro_analytics_refresh_cooldownFiltro: $secondsImposta i secondi di attesa tra un aggiornamento e l'altro. L'impostazione predefinita è 30. Restituisci 0 per disattivare l'attesa.
stwpro_analytics_refreshedAzione: $timestampViene eseguita dopo che un aggiornamento cancella le cache. Usala per ricostruire i tuoi dati derivati.

Le soglie sopra indicate vengono lette al momento del calcolo delle analisi. Se ne modifichi una e la schermata non cambia, aggiorna le analisi in modo che i risultati memorizzati nella cache vengano ricostruiti.

Hook delle liste dei desideri predefinite

Questi hook controllano le liste dei desideri che Pro crea automaticamente per i nuovi utenti.

HookTipo e argomentiCosa fa
stwpro_default_wishlists_sync_thresholdFiltro: $thresholdSe l'elenco configurato ha più liste dei desideri di questo numero, Pro le crea in background con Action Scheduler anziché durante la registrazione. L'impostazione predefinita è 3.
stwpro_default_wishlists_max_entriesFiltro: $maxIl numero massimo di liste dei desideri predefinite che puoi salvare nell'elenco. L'impostazione predefinita è 20.
stwpro_after_seed_default_wishlistsAzione: $user_id, $created, $listViene eseguita dopo che un utente riceve le liste dei desideri predefinite. $created è il numero di liste dei desideri create. Non viene eseguita quando non ne è stata creata nessuna.
add_action( 'stwpro_after_seed_default_wishlists', function ( $user_id, $created, $list ) {
    update_user_meta( $user_id, 'default_wishlists_created', $created );
}, 10, 3 );

Altri hook

HookTipo e argomentiCosa fa
stwpro_wholesale_priceFiltro: $price, $product_id, $user, $user_wholesale_roleConsente a un altro plugin wholesale di fornire il prezzo wholesale. Restituisci un float per saltare la ricerca di Prezzi Wholesale. Restituisci false per utilizzare la ricerca predefinita.
stwpro_disable_abilitiesFiltro: $disabledRestituisci true per impedire a Pro di registrare le sue funzionalità. Puoi anche definire la costante STWPRO_DISABLE_ABILITIES come true.
stwpro_show_powered_by_in_emailFiltro: $showRestituisci false per rimuovere la riga “Powered by SaveTo Wishlist” dalle email inviate da Pro.
stwpro_wishlist_createdAzione: $wishlist_data, $wishlist_itemsEseguito quando una richiesta POST valida raggiunge il percorso webhook /webhook/wishlist-created.
add_filter( 'stwpro_show_powered_by_in_email', '__return_false' );

Domande frequenti

Posso chiamare i percorsi di analisi o automazione dall'esterno di WordPress?
Solo come amministratore connesso. Questi percorsi verificano la capacità manage_options e servono le schermate del plugin stesso, quindi basati sugli hook sopra per qualsiasi cosa debba rimanere stabile. Per sistemi esterni, usa il percorso webhook con la sua chiave API.

Perché le modifiche alle mie soglie non vengono visualizzate nella schermata di analisi?
I risultati dell'analisi sono memorizzati nella cache, per un'ora per impostazione predefinita. Aggiorna l'analisi o riduci la cache con i filtri di durata della cache, e le nuove soglie si applicano.

Serve aiuto?

Se hai una domanda o riscontri problemi, siamo qui per aiutarti.

Questo articolo è stato utile?

Articoli Correlati

Serve Supporto?

Non riesci a trovare la risposta che cerchi?
Contatta il Supporto
Completa il Tuo Acquisto