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.
| Route | Metodo | Chi può chiamarlo | Cosa fa |
|---|---|---|---|
/analytics/products-insight | GET | Amministratori, con limite di frequenza | Restituisce 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-insight | GET | Amministratori, con limite di frequenza | Restituisce insight su categorie e marchi. |
/analytics/engagement-insight | GET | Amministratori, con limite di frequenza | Restituisce insight sull'engagement per i prodotti. |
/analytics/timebased-trends | GET | Amministratori, con limite di frequenza | Restituisce trend nel tempo. Accetta range con il valore 7days, 30days, 90days o 365days. Il valore predefinito è 30days. |
/analytics/customer-behavior | GET | Amministratori, con limite di frequenza | Restituisce insight sul comportamento dei clienti, inclusi i migliori wishlist e i segmenti di clienti. |
/analytics/refresh | POST | Amministratori | Cancella 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.
| Route | Metodo | Cosa fa |
|---|---|---|
/automations/get-automations | GET | Restituisce le automazioni salvate. I parametri di query vengono utilizzati come filtri. |
/automations/save-automation | POST | Crea o aggiorna un'automazione. Legge id, trigger_type, action_type, status, description e action_data. |
/automations/delete-automation | DELETE | Elimina l'automazione con l'ID nel parametro id. Restituisce un errore 400 quando l'ID è vuoto. |
/automations/send-test-email | POST | Invia 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.
| Route | Metodo | Cosa fa |
|---|---|---|
/default-wishlists/settings | GET, POST | Legge o salva le impostazioni della wishlist predefinita. La richiesta POST legge il parametro list. |
/default-wishlists/migration-status | GET | Restituisce 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-migration | POST | Avvia quel processo. |
/default-wishlists/cancel-migration | POST | Annulla 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
| Filtro | Argomenti | Cosa fa |
|---|---|---|
stwpro_api_admin_permissions_check | $response, $request | Filtra 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, $request | Filtra il risultato del controllo della chiave API sulla route webhook. |
stwpro_api_rate_limit | $limit, $request, $is_read | Imposta 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, $request | Filtra 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.
| Filtro | Argomenti | Cosa fa |
|---|---|---|
stwpro_automation_actions | $actions | Filtra l'elenco dei tipi di azione. Ogni elemento è una chiave di azione e la sua etichetta. |
stwpro_automation_action_handlers | $handlers | Filtra 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.
| Filtro | Argomenti |
|---|---|
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}.
| Filtro | Argomenti | Cosa filtra |
|---|---|---|
stwpro_automation_email_subject_template | $subject_template, $automation, $action_data, $context_data, $data, $params | L'oggetto email grezzo. |
stwpro_automation_email_message_template | $message_template, $automation, $action_data, $context_data, $data, $params | Il messaggio email grezzo. |
stwpro_automation_webhook_payload_template | $payload_template, $automation, $action_data, $context_data, $data, $params | Il payload webhook grezzo. |
stwpro_automation_usermeta_meta_value_template | $meta_value, $automation, $action_data, $context_data, $data, $params | Il valore grezzo per l'azione di aggiornamento dei metadati utente. |
Altri tre filtri hanno i propri argomenti:
| Filtro | Argomenti | Cosa filtra |
|---|---|---|
stwpro_automation_variables | $trigger_variables, $trigger_type | I tag delle variabili disponibili per un trigger. |
stwpro_automation_webhook_recipes | $recipes | Le ricette rapide per webhook. |
stwpro_automations_get_all_automations | $automations, $trigger_type, $action_type | Le 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_createdstwpro_automation_data_item_added_to_wishliststwpro_automation_data_item_removed_from_wishliststwpro_automation_data_product_on_salestwpro_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.
| Livello | Filtro conteggio wishlist | Predefinito | Filtro spesa | Predefinito |
|---|---|---|---|---|
| Platino | stwpro_admin_platinum_threshold | 8 | stwpro_admin_platinum_spent_threshold | 1500 |
| Oro | stwpro_admin_gold_threshold | 5 | stwpro_admin_gold_spent_threshold | 800 |
| Argento | stwpro_admin_silver_threshold | 3 | stwpro_admin_silver_spent_threshold | 400 |
| Bronzo | 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;
} );
Altri filtri di analisi modificano i segmenti dei clienti e gli elenchi mostrati nelle schermate di analisi:
| Filtro | Argomenti | Predefinito | Cosa fa |
|---|---|---|---|
stwpro_admin_vip_threshold | $value | 5 | Conteggio wishlist per il segmento clienti VIP. |
stwpro_admin_vip_spent_threshold | $value | 800 | Spesa totale per il segmento clienti VIP. |
stwpro_admin_inactive_days | $value | 90 | Giorni di inattività prima che un cliente venga considerato inattivo. |
stwpro_admin_top_wishlisters_limit | $limit | 15 | Quanti clienti restituisce l'elenco dei top wishlister. |
stwpro_admin_top_wishlisters_excluded_roles | $excluded_roles | array( 'administrator', 'shop_manager' ) | Ruoli esclusi dall'elenco dei top wishlister. |
stwpro_admin_customer_segments | $segments, $total_customers | Nessuno | L'elenco finale dei segmenti di clienti. |
Dati di analisi, cache e aggiornamento
| Hook | Tipo e argomenti | Cosa fa |
|---|---|---|
stwpro_analytics_products_insight_data | Filtro: $products_insight, $request | Modifica i dati restituiti dal percorso products-insight. |
stwpro_analytics_products_insight_cache_duration | Filtro: $seconds | Imposta 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_cooldown | Filtro: $seconds | Imposta i secondi di attesa tra un aggiornamento e l'altro. L'impostazione predefinita è 30. Restituisci 0 per disattivare l'attesa. |
stwpro_analytics_refreshed | Azione: $timestamp | Viene 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.
| Hook | Tipo e argomenti | Cosa fa |
|---|---|---|
stwpro_default_wishlists_sync_threshold | Filtro: $threshold | Se 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_entries | Filtro: $max | Il numero massimo di liste dei desideri predefinite che puoi salvare nell'elenco. L'impostazione predefinita è 20. |
stwpro_after_seed_default_wishlists | Azione: $user_id, $created, $list | Viene 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
| Hook | Tipo e argomenti | Cosa fa |
|---|---|---|
stwpro_wholesale_price | Filtro: $price, $product_id, $user, $user_wholesale_role | Consente 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_abilities | Filtro: $disabled | Restituisci 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_email | Filtro: $show | Restituisci false per rimuovere la riga “Powered by SaveTo Wishlist” dalle email inviate da Pro. |
stwpro_wishlist_created | Azione: $wishlist_data, $wishlist_items | Eseguito 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.
- Utenti Premium: Apri un ticket di supporto
- Utenti Gratuiti: Visita il nostro forum della community
