Stai creando un'integrazione personalizzata, modificando l'aspetto del pulsante della wishlist o vuoi reagire quando un cliente salva un prodotto? SaveTo Wishlist ti offre filtri e azioni di WordPress per ognuno di questi compiti, più un'API REST per leggere e modificare le wishlist. Questo articolo elenca gli hook e le route inclusi in SaveTo Wishlist Lite 1.1.8, con gli argomenti che ciascuno riceve e un esempio funzionante per i casi comuni.
Prima di iniziare
- Sono necessari SaveTo Wishlist Lite e WooCommerce attivi sul sito. SaveTo Wishlist Pro e Registry aggiungono i propri hook, che non sono trattati qui.
- Ogni nome di hook inizia con
stwlite_. - Inserisci il tuo codice in un piccolo plugin personalizzato o in un plugin per snippet di codice. Aggiungi i filtri di posizionamento (vedi sotto) in un file del plugin, non nel file
functions.phpdel tema. - Ogni hook e route in questo articolo esiste in SaveTo Wishlist Lite 1.1.8. Un hook non elencato qui non fa parte dell'interfaccia pubblica, quindi non fare affidamento su di esso.
Hook
Ogni hook sottostante elenca il suo tipo, gli argomenti che riceve e cosa fa. Quando registri una callback che accetta più di un argomento, passa il numero di argomenti come quarto parametro di add_filter() o add_action(), come mostrano gli esempi.
Output del pulsante
Questi filtri modificano il markup del pulsante della wishlist prima che venga stampato. Il plugin passa il markup finale attraverso wp_kses(), quindi i tag e gli attributi al di fuori della sua lista consentita vengono rimossi. Per consentire più tag, usa il filtro stwlite_allowed_button_html, che riceve l'array della lista consentita.
| Hook | Tipo | Argomenti | Cosa fa |
|---|---|---|---|
stwlite_wishlist_button_html | Filtro | $button_html, $product, $placement, $style, $button_label | Filtra il markup di ogni pulsante della wishlist creato dal plugin. Viene eseguito anche quando il pulsante è nascosto, nel qual caso $button_html è una stringa vuota. |
stwlite_wishlist_button_shop_html | Filtro | $button_html, $product, $placement, $style, $color_options | Filtra il pulsante nelle pagine dello shop e degli archivi. |
stwlite_wishlist_button_product_html | Filtro | $button_html, $product, $placement, $style, $color_options | Filtra il pulsante nelle pagine dei singoli prodotti. Se la tua callback restituisce una stringa vuota, non viene stampato alcun pulsante. |
stwlite_wishlist_button_cart_html | Filtro | $button_html | Filtra il pulsante nella pagina del carrello che salva l'intero carrello. |
stwlite_wishlist_button_cart_item_html | Filtro | $button_html, $product, $style, $color_options | Filtra il pulsante per articolo nel carrello. |
stwlite_wishlist_button_show_button | Filtro | $show (predefinito true), $product | Restituisci false per nascondere il pulsante per un prodotto. |
stwlite_wishlist_button_allow_product_multiple_lists | Filtro | $allow (predefinito true), $product | Restituisci false per rimuovere il menu a discesa "Scegli lista" dal pulsante. |
stwlite_before_wishlist_button_shop_page, stwlite_after_wishlist_button_shop_page | Azione | Nessuno | Esegui prima e dopo la stampa del pulsante della pagina negozio. |
stwlite_allowed_button_html | Filtro | $allowed_html | Filtra la lista consentita di wp_kses() per il markup del pulsante. |
Questo esempio aggiunge una breve nota dopo il pulsante per i prodotti in saldo:
add_filter( 'stwlite_wishlist_button_html', function ( $button_html, $product, $placement, $style, $button_label ) {
if ( '' === $button_html || ! $product instanceof WC_Product || ! $product->is_on_sale() ) {
return $button_html;
}
return $button_html . '<span class="my-sale-note">On sale</span>';
}, 10, 5 );
Posizionamento, stile ed etichette del pulsante
Questi filtri modificano dove appare il pulsante e come appare. Ognuno riceve l'impostazione salvata e restituisce il valore da utilizzare.
| Hook | Tipo | Argomenti | Cosa fa |
|---|---|---|---|
stwlite_wishlist_button_shop_placement | Filtro | $placement | Posizionamento nelle pagine negozio e archivio. |
stwlite_wishlist_button_product_placement | Filtro | $placement | Posizionamento nelle pagine del singolo prodotto. |
stwlite_wishlist_button_shop_style, stwlite_wishlist_button_product_style, stwlite_wishlist_button_cart_style | Filtro | $style | Stile del pulsante per ogni tipo di pagina. |
stwlite_wishlist_button_shop_label, stwlite_wishlist_button_selected_shop_label, stwlite_wishlist_button_cart_label | Filtro | $label | Testo del pulsante per lo stato non salvato, lo stato salvato e il pulsante del carrello. |
stwlite_wishlist_button_shop_color_options, stwlite_wishlist_button_product_color_options, stwlite_wishlist_button_cart_color_options | Filtro | $color_options | L'array delle impostazioni colore per ogni tipo di pagina. |
I posizionamenti nel negozio sono top_right, top_left, above_title, below_title, above_button, below_button e disable. I posizionamenti nella pagina del prodotto sono top_image_right, top_image_left, top_cart, bottom_cart, inline_cart, top_title, bottom_title e disable. Il plugin legge il posizionamento una volta, quando si avvia sull'hook setup_theme con priorità 100. Un filtro di posizionamento deve quindi essere aggiunto prima di quel punto, quindi registralo in un file di plugin e non in un file functions.php del tema. I filtri di stile, etichetta e colore vengono eseguiti ogni volta che un pulsante viene visualizzato, quindi funzionano da qualsiasi codice.
add_filter( 'stwlite_wishlist_button_product_placement', function ( $placement ) {
return 'bottom_cart';
} );
Per la schermata delle impostazioni corrispondente, vedere Come personalizzare il posizionamento e gli stili del pulsante della wishlist in WooCommerce.
Dati della wishlist
Questi filtri modificano i dati della wishlist mentre il plugin li legge. Vengono eseguiti su molte richieste, inclusi i controlli di proprietà e permessi, quindi mantieni le tue callback veloci. Non modificare i valori id, user_id, status o is_public, poiché il plugin li legge per decidere chi può vedere una wishlist.
| Hook | Tipo | Argomenti | Cosa fa |
|---|---|---|---|
stwlite_collection_data | Filtro | $collection | Filtra la riga grezza del database ogni volta che una wishlist viene caricata per ID, codice URL o nome. |
stwlite_collections_data | Filtro | $data | Filtra l'array di oggetti wishlist restituiti per un elenco di wishlist. |
stwlite_single_collection_data | Filtro | $data | Filtra un singolo oggetto wishlist dopo un salvataggio e nel percorso della wishlist dell'amministratore. |
stwlite_collection_items_data | Filtro | $data | Filtra l'array di oggetti articolo per una wishlist. |
stwlite_all_wishlists | Filtro | $collections, $params | Filtra il risultato dell'elenco (data, total, currentPage) prima che il frontend lo restituisca. |
stwlite_collection_data_to_update | Filtro | $data, $params | Filtra i valori delle colonne appena prima che il plugin scriva una wishlist nel database. |
stwlite_options | Filtro | $options | Filtra l'array di opzioni che il plugin passa allo script frontend della wishlist. |
Questo esempio rimuove la descrizione dagli oggetti wishlist nelle risposte dell'elenco:
add_filter( 'stwlite_collections_data', function ( $collections ) {
foreach ( $collections as $collection ) {
$collection->description = '';
}
return $collections;
} );
Accesso alla wishlist dell'utente
Questi filtri decidono chi può leggere o possedere una wishlist. Per una richiesta di lettura, il plugin prima consente agli amministratori con la capacità manage_options, poi al proprietario della wishlist, poi alle wishlist pubbliche pubblicate, poi alle proprie regole di condivisione. Solo dopo tali controlli chiama stwlite_user_wishlist_access.
| Hook | Tipo | Argomenti | Cosa fa |
|---|---|---|---|
stwlite_user_wishlist_access | Filtro | $granted (predefinito null), $data, $user_id, $request | Restituisci true per consentire l'accesso in lettura, false per rifiutarlo, o null per lasciare che sia il plugin a decidere. $data è l'oggetto wishlist, $user_id è 0 per un ospite e $request è la richiesta REST quando presente. |
stwlite_user_owns_wishlist | Filtro | $owns, $collection_id, $user_id, $collection | Se l'utente corrente possiede la wishlist. Viene eseguito solo per una wishlist esistente. |
stwlite_show_all_wishlists_for_admin | Filtro | $show (predefinito false) | Restituisci true per consentire agli amministratori di vedere ogni wishlist del cliente nel percorso delle wishlist del frontend. |
Questo esempio consente ai responsabili del negozio di leggere qualsiasi wishlist:
add_filter( 'stwlite_user_wishlist_access', function ( $granted, $wishlist, $user_id, $request ) {
if ( $user_id && user_can( $user_id, 'manage_woocommerce' ) ) {
return true;
}
return $granted;
}, 10, 4 );
Azioni della wishlist
Usa queste azioni per reagire quando qualcosa cambia, ad esempio per sincronizzare i dati con un CRM o scrivere una voce di log.
| Hook | Tipo | Argomenti | Quando si attiva |
|---|---|---|---|
stwlite_before_product_added_to_wishlist | Azione | $product_id, $quantity, $collection_id, $user_id | Prima che un prodotto venga aggiunto a una wishlist dal pulsante o dalle funzionalità AI del plugin. |
stwlite_after_product_added_to_wishlist | Azione | $product_id, $quantity, $collection_id, $user_id, $added | Dopo tale salvataggio. $added è false quando non è stato scritto nulla. $collection_id è il valore grezzo della richiesta ed è spesso 0, che indica la wishlist predefinita. |
stwlite_before_product_removed_from_wishlist | Azione | $product_id, $collection_id, $variation_ids | Prima che un prodotto venga rimosso da una wishlist tramite il pulsante. |
stwlite_after_product_removed_from_wishlist | Azione | $product_id, $collection_id, $variation_ids | Dopo che un prodotto è stato rimosso da una wishlist, tramite il pulsante, l'API REST o le funzionalità AI. |
stwlite_before_product_added_to_cart, stwlite_after_product_added_to_cart | Azione | $collection_id, $product_id, $quantity, $variation_id | Prima e dopo che un articolo della wishlist viene spostato nel carrello. |
stwlite_before_save_collection | Azione | $data | Prima che una wishlist venga salvata. $data è l'array dei valori delle colonne. |
stwlite_after_save_collection | Azione | $data, $params | Dopo che una wishlist è stata salvata. $data è l'oggetto della wishlist salvata. |
stwlite_after_insert_collection_item, stwlite_after_update_collection_item | Azione | $data | Dopo che una riga di articolo è stata inserita o aggiornata. |
stwlite_before_delete_collections | Azione | $ids | Prima che le wishlist vengano eliminate. |
stwlite_after_delete_collections | Azione | $ids, $deleted | Dopo che le wishlist sono state eliminate. $deleted è il numero di wishlist eliminate. |
Questo esempio memorizza l'ultimo prodotto salvato da un cliente nei suoi meta utente:
add_action( 'stwlite_after_product_added_to_wishlist', function ( $product_id, $quantity, $collection_id, $user_id, $added ) {
if ( ! $added || ! $user_id ) {
return;
}
update_user_meta( $user_id, 'my_last_wishlisted_product', (int) $product_id );
}, 10, 5 );
Schede e controlli delle impostazioni di amministrazione
La schermata delle impostazioni costruisce le sue schede e i suoi campi da array. Usa questi filtri per aggiungere la tua scheda, sezione o campo, o per modificarne uno esistente.
| Hook | Tipo | Argomenti | Cosa fa |
|---|---|---|---|
stwlite_admin_setting_tabs | Filtro | $tabs | Filtro finale per l'array completo delle schede. |
stwlite_admin_setting_controls | Filtro | $controls | Filtro finale per l'array completo dei controlli. |
stwlite_admin_data_tables | Filtro | $data_tables (array vuoto predefinito) | Registra le tabelle dati per l'app delle impostazioni. |
stwlite_admin_setting_default_tabs, stwlite_admin_setting_default_parent_tabs, stwlite_admin_setting_default_child_tabs | Filtro | $tabs | Filtri precedenti per l'array delle schede, la scheda principale e le schede secondarie. |
stwlite_admin_setting_default_general_tab, stwlite_admin_setting_default_wishlist_page_tab, stwlite_admin_setting_default_wishlist_guest_tab, stwlite_admin_setting_default_wishlist_button_tab, stwlite_admin_setting_default_importer_tab | Filtro | $tab | Filtra una scheda secondaria. Le varianti _sections di questi nomi filtrano le sezioni di quella scheda. |
stwlite_admin_setting_default_controls | Filtro | $controls | Filtro precedente per l'array dei controlli. |
stwlite_admin_setting_default_general_tab_controls, stwlite_admin_setting_default_wishlist_page_tab_controls, stwlite_admin_setting_default_wishlist_guest_tab_controls, stwlite_admin_setting_default_wishlist_button_tab_controls | Filtro | $controls | Filtra i controlli di una scheda. |
Le schede si trovano sotto la chiave padre saveto_wishlist. Le chiavi delle schede secondarie sono general, wishlist_page, wishlist_guest, wishlist_button e importer. Ogni scheda secondaria contiene sort, key, label, icon e un array sections. L'array dei controlli è indicizzato come $controls[ 'saveto_wishlist' ][ $tab_key ][ $section_key ], e ogni sezione contiene un elenco di array di controlli. Un controllo ha un type (ad esempio switch o select), un label, un id che è il nome dell'opzione, una description e un default. I controlli di tipo switch usano i valori yes e no.
Questo esempio aggiunge uno switch alla scheda Generale. Presuppone la chiave di sezione save_to_wishlist_settings, che è la prima sezione di quella scheda.
add_filter( 'stwlite_admin_setting_default_general_tab_controls', function ( $controls ) {
$controls['save_to_wishlist_settings'][] = array(
'type' => 'switch',
'label' => __( 'Log wishlist adds', 'my-plugin' ),
'id' => 'my_plugin_log_wishlist_adds',
'description' => __( 'If Yes, write an entry to the debug log when a customer saves a product.', 'my-plugin' ),
'options' => array(
'yes' => __( 'Yes', 'my-plugin' ),
'no' => __( 'No', 'my-plugin' ),
),
'default' => get_option( 'my_plugin_log_wishlist_adds', 'no' ),
);
return $controls;
} );
La schermata delle impostazioni salva ogni valore di controllo tramite il percorso delle impostazioni di amministrazione descritto più avanti in questo articolo. Due filtri dinamici ti consentono di gestire tu stesso un salvataggio o un pulsante:
stwlite_group_settings_{action}è un filtro che riceve i valori salvati come$optionsquando il payload delle impostazioni contiene una chiave chiamataaction. Restituisce l'array di risposta constatusemessage.stwlite_trigger_{action}è un filtro che riceve i parametri della richiesta come$paramsquando viene chiamata la route dell'azione. Restituisce un array constatusemessage, e un URLredirectopzionale.
Traduzioni frontend
| Hook | Tipo | Argomenti | Cosa fa |
|---|---|---|---|
stwlite_frontend_translations | Filtro | $i18n | Filtra la mappa delle chiavi di traduzione alle stringhe tradotte che il plugin passa all'app della wishlist. Restituisce l'array. Un valore di ritorno non array viene ignorato. |
La pagina della wishlist carica queste stringhe due volte per richiesta, quindi la tua callback dovrebbe unire in una mappa ed evitare lavori pesanti. Questo esempio cambia una stringa. Usa una chiave che esiste già nell'array.
add_filter( 'stwlite_frontend_translations', function ( $i18n ) {
$i18n['just_now'] = __( 'a moment ago', 'my-plugin' );
return $i18n;
} );
Dati di tracciamento dell'utilizzo
Quando un negozio ha consentito il tracciamento dell'utilizzo, il plugin invia un check-in periodico. Questi filtri consentono a un plugin complementare di aggiungere a tali dati. I valori devono essere scalari e non devono contenere credenziali o dati personali.
| Hook | Tipo | Argomenti | Cosa fa |
|---|---|---|---|
stwlite_usage_checkin_data | Filtro | $data | Filtra l'intero payload del check-in. |
stwlite_usage_settings | Filtro | $settings | Filtra le coppie nome e valore delle impostazioni nel payload. |
stwlite_usage_effectiveness | Filtro | $data, $start, $end | Filtra le metriche settimanali di efficacia. $start e $end sono date UTC nel formato Y-m-d H:i:s. |
L'impostazione "Tracciamento utilizzo" nella scheda Generale controlla il consenso. Se un negozio la imposta su No, il plugin non segnala, qualunque cosa restituiscano i tuoi filtri.
API REST
Tutte le route utilizzano lo spazio dei nomi saveto-wishlist/v1, quindi il percorso completo è https://your-site.com/wp-json/saveto-wishlist/v1/ seguito dal percorso nelle tabelle. Seguono la normale autenticazione REST di WordPress. Il codice del browser invia l'header X-WP-Nonce per un utente connesso, e altri client possono utilizzare una password applicativa con autenticazione HTTP Basic. Una richiesta rifiutata restituisce l'errore rest_forbidden_context con stato 401 per un chiamante disconnesso o 403 per uno connesso.
Route cliente
Queste route alimentano il pulsante della wishlist e la pagina della wishlist.
| Metodo e percorso | Chi può chiamarlo | Cosa fa |
|---|---|---|
POST /frontend/endpoints | Utenti connessi. Gli ospiti vengono rifiutati a meno che un filtro di autorizzazione non li consenta. | Esegue un'azione della wishlist scelta dal parametro action. Vedi la tabella delle azioni di seguito. |
GET /frontend/endpoints/wishlists | Uguale a sopra. | Restituisce data, total e currentPage per le wishlist. I clienti vedono le proprie wishlist. Passando is_public=true elenca le wishlist pubbliche di altri clienti. |
GET /frontend/endpoints/wishlist-items | Utenti connessi. Un ospite può leggere solo una wishlist pubblica denominata da collection_id. | Restituisce gli articoli della wishlist nel parametro collection_id richiesto. Il chiamante deve anche essere autorizzato a visualizzare quella wishlist, altrimenti il percorso restituisce un errore 401 o 403. |
POST /frontend/endpoints/guest-wishlist-products | Solo per ospiti. Un utente connesso riceve un errore. | Accetta un array products di oggetti con productId, quantity, priority e addedAt. Restituisce i dati del prodotto corrispondente per una wishlist memorizzata nel browser. |
Il percorso POST /frontend/endpoints risponde sempre con HTTP 200 con un campo status, quindi controlla status nel corpo. Un chiamante che non possiede la wishlist riceve status impostato su error. Solo gli utenti con la capacità manage_options possono scrivere sulla wishlist di un altro utente.
Valore action | Parametri che legge | Hook che viene eseguito per primo |
|---|---|---|
add_wishlist | name, description, status, is_default, is_public, url_code, emails, user_ids, allowed_roles, allowed_edit_emails | stwlite_before_api_save_collection_add_wishlist con $data |
update_wishlist | id più qualsiasi campo da add_wishlist. Vengono aggiornati solo i campi che invii. | stwlite_before_api_save_collection_update_wishlist con $data |
remove_wishlist | ids | Nessuno |
add_wishlist_item | collection_id, product_id, variation_id, quantity, priority, notes | stwlite_before_api_save_collection_item_add_wishlist_item con $data |
update_wishlist_item | id più i campi da add_wishlist_item | stwlite_before_api_save_collection_item_update_wishlist_item con $data |
move_wishlist_item | id, collection_id | stwlite_before_api_save_collection_item_move_wishlist_item con $data |
remove_wishlist_item | collection_id, product_id, variation_id | stwlite_after_product_removed_from_wishlist viene eseguito dopo la rimozione con $product_id, $collection_id, $variation_ids |
update_wishlist_item_position | liste | Nessuno |
Questa richiesta elenca le wishlist dell'account proprietario della password dell'applicazione:
curl -u "username:application-password" \
"https://your-site.com/wp-json/saveto-wishlist/v1/frontend/endpoints/wishlists"
Questi filtri modificano chi supera i controlli del percorso del cliente e cosa restituisce il percorso dell'ospite:
| Hook | Tipo | Argomenti | Cosa fa |
|---|---|---|---|
stwlite_api_user_permissions_check | Filtro | $response, $request | Risultato finale per POST /frontend/endpoints e GET /frontend/endpoints/wishlists. Restituisce true o un WP_Error. |
stwlite_api_user_force_access | Filtro | $force (predefinito false), $request | Restituisce true per consentire a un chiamante non registrato di superare questi due percorsi. |
stwlite_check_any_user_has_permission | Filtro | $response, $request | Risultato finale per il percorso wishlist-items. |
stwlite_check_any_user_has_permission_validation | Filtro | $valid (predefinito false), $data, $request | Restituisce true per consentire a un chiamante non registrato di leggere una wishlist che non è pubblica. |
stwlite_check_guest_permission | Filtro | $response, $request | Risultato finale per il percorso guest-wishlist-products. |
stwlite_guest_wishlist_products_data | Filtro | $products, $product_data | Filtra l'elenco dei prodotti restituito dal percorso dell'ospite. |
Percorsi Admin
I percorsi seguenti servono le schermate di amministrazione del plugin e potrebbero cambiare tra le release. Preferisci gli hook sopra per le integrazioni. Ogni percorso di amministrazione richiede la capacità manage_options. Usa il filtro stwlite_api_admin_permissions_check ($response, $request) per modificarlo e fai attenzione quando ampli l'accesso, poiché questi percorsi possono scrivere opzioni del sito ed eliminare wishlist.
| Metodo e percorso | Cosa fa |
|---|---|
POST /admin/wishlists | Crea o aggiorna una wishlist dal corpo della richiesta. Restituisce un errore 422 se aggiungi articoli non ancora salvati a una wishlist il cui stato è draft. |
DELETE /admin/wishlists | Elimina le wishlist nel parametro ids. La risposta elenca count e skipped. Una wishlist viene saltata quando è l'ultima wishlist del suo proprietario. |
GET /admin/wishlists/collections | Restituisce una pagina di wishlist con data, total e currentPage. |
GET /admin/wishlists/collection/{id} | Restituisce una wishlist tramite ID numerico. |
GET /admin/wishlists/items | Percorso segnaposto che restituisce un elenco data vuoto. |
POST /admin/settings/save | Salva le impostazioni. Il corpo è un elenco di oggetti con key e value. Un valore di true o false viene archiviato come yes o no. |
POST /admin/settings/action | Esegue il filtro stwlite_trigger_{action} per il parametro action. |
GET /admin/importer/sources | Elenca i plugin della wishlist rilevati dal sito dall'importatore. |
GET /admin/importer/preview/{source} | Restituisce il conteggio degli elementi e un'anteprima per una sorgente. |
POST /admin/importer/import | Avvia un'importazione. Richiede source e un oggetto opzionale options (merge_existing, preserve_default, preserve_privacy, batch_number, job_id). Un utente può avviare un'importazione ogni 300 secondi. |
GET /admin/importer/import/{job_id} | Restituisce lo stato di avanzamento di un'attività di importazione. |
DELETE /admin/importer/import/{job_id} | Annulla un'attività di importazione. |
Le sorgenti di importazione integrate sono yith, ti, moreconvert e wpc. Utilizza il filtro stwlite_available_importers, che riceve e restituisce un array che mappa un slug di sorgente a un nome di classe di importatore, per registrarne un'altra.
Domande frequenti
Perché il mio filtro di posizionamento non fa nulla?
Il plugin legge il posizionamento quando si avvia sull'hook setup_theme con priorità 100. Aggiungi il filtro da un file del plugin. Il file functions.php di un tema viene caricato dopo quel punto.
Perché il mio markup del pulsante perde un tag o un attributo?
Il plugin elabora il markup del pulsante tramite wp_kses(). Aggiungi il tag o l'attributo all'elenco consentito con il filtro stwlite_allowed_button_html.
Perché la route di salvataggio restituisce HTTP 200 per una richiesta rifiutata?
POST /frontend/endpoints risponde sempre con HTTP 200 e inserisce il risultato nel campo status del corpo. Leggi status e message invece del codice HTTP.
Cosa fare dopo
- Come estendere SaveTo Wishlist Pro con hook e la REST API
- Come estendere il Registro di SaveTo Wishlist con hook e la REST API
- Come usare le abilit uevo AI in SaveTo Wishlist
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
