1. Casa
  2. Knowledge Base
  3. WooCommerce Wholesale Prices Premium
  4. API
  5. Come personalizzare Wholesale Suite con hook e filtri

Come personalizzare Wholesale Suite con hook e filtri

I plugin Wholesale Suite espongono hook e filtri PHP. Puoi usarli per modificare prezzi, moduli, email, preventivi e comportamento di pagamento senza modificare i file del plugin. Questo articolo ti mostra come aggiungere il tuo codice a un hook ed elenca gli hook destinati all'uso nel tuo codice, con i loro argomenti e cosa cambiano. È una selezione, non ogni hook che i plugin attivano.

Ogni tabella elenca il nome dell'hook, il suo tipo, i suoi argomenti e cosa cambia. Un filtro deve restituire un valore. Un'azione non restituisce un valore.

Aggiungi il tuo codice a un hook

  1. Scegli dove aggiungere il tuo codice: il file functions.php di un tema child o un plugin per snippet di codice.
  2. Trova l'hook di cui hai bisogno nelle tabelle dei plugin qui sotto. Prendi nota del suo tipo e dei suoi argomenti.
  3. Aggiungi il tuo snippet con add_filter() per un filtro o add_action() per un'azione. Gli esempi nelle sezioni dei plugin mostrano lo schema.
  4. Salva il file.
  5. Testa la modifica su un sito di staging prima di aggiungerla al tuo negozio live.

Non modificare i file del plugin. Un aggiornamento del plugin li sostituirà e rimuoverà la tua modifica.

Gli hook di un plugin Wholesale Suite vengono eseguiti solo quando quel plugin è attivo. Ad esempio, gli hook di WooCommerce Wholesale Prices Premium richiedono WooCommerce Wholesale Prices Premium sul tuo sito.

I dettagli degli hook in questo articolo corrispondono a queste versioni dei plugin: WooCommerce Wholesale Prices 2.3.1, WooCommerce Wholesale Prices Premium 2.1.5, WooCommerce Wholesale Order Form 3.1.3, WooCommerce Wholesale Lead Capture 2.0.7, WooCommerce Wholesale Quotes 1.0.3, WooCommerce Wholesale Payments 1.0.8 e Invoice Gateway for WooCommerce 1.1.7.

WooCommerce Wholesale Prices

WooCommerce Wholesale Prices aggiunge hook attorno ai campi del prezzo all'ingrosso nel pannello di modifica rapida di WooCommerce. Ha anche un filtro per disattivare le funzionalità AI di Wholesale Suite. Per saperne di più sulle funzionalità, vedi Come usare le funzionalità AI in Wholesale Suite.

HookTipoArgomentiCosa cambia
wwp_before_quick_edit_wholesale_price_fieldsAzione$all_wholesale_roles (array, ruoli all'ingrosso registrati)Viene eseguito nel pannello di modifica rapida, prima dei campi del prezzo all'ingrosso. Usalo per stampare il tuo markup. Non viene eseguito quando il filtro wwp_product_editor_show_wholesale_prices_fields restituisce false.
wwp_after_quick_edit_wholesale_price_fieldsAzione$all_wholesale_roles (array, ruoli all'ingrosso registrati)Viene eseguito nel pannello di modifica rapida, dopo i campi del prezzo all'ingrosso. Segue la stessa regola dell'hook 'before'.
wwp_quick_edit_allowed_product_typesFiltro$allowed_product_types (array, predefinito simple e external)
$context (string, wholesale_price_fields)
Imposta quali tipi di prodotto mostrano e salvano i campi del prezzo all'ingrosso nella modifica rapida. Imposta anche quali prodotti ricevono i dati del prezzo all'ingrosso nell'elenco dei prodotti.
wwp_product_editor_show_wholesale_prices_fieldsFiltro$show (bool, predefinito true)Restituisci false per nascondere i campi del prezzo all'ingrosso nell'editor del prodotto e nell'editing rapido.
wwp_disable_abilitiesFiltro$disabled (bool, default false)Restituisci true per disattivare le funzionalità AI di Wholesale Suite. Questo disattiva anche le funzionalità degli altri plugin di Wholesale Suite, perché si registrano tramite WooCommerce Wholesale Prices.

Esempio: aggiungi una nota sotto i campi del prezzo all'ingrosso

Questo esempio stampa una breve nota dopo i campi del prezzo all'ingrosso nell'editing rapido.

add_action( 'wwp_after_quick_edit_wholesale_price_fields', function ( $all_wholesale_roles ) {
	echo '<p>' . esc_html__( 'Enter prices without tax.', 'your-text-domain' ) . '</p>';
} );

WooCommerce Wholesale Prices Premium

WooCommerce Wholesale Prices Premium ha hook per sconti quantità, sconti carrello, controlli ordine minimo, report e API REST. Tutti gli hook in questa sezione richiedono WooCommerce Wholesale Prices Premium.

HookTipoArgomentiCosa cambia
wwpp_quantity_based_discount_base_priceFiltro$base_price (float|string, il prezzo da cui partono i livelli di sconto quantità)
$mapping (array, regole sconto quantità)
$raw_wholesale_price (float|string)
$product (WC_Product)
$wholesale_role (array)
Modifica il prezzo base a cui si applicano i livelli di sconto basati sulla quantità. La base è il prezzo di vendita all'ingrosso attivo se presente, altrimenti il prezzo all'ingrosso. Quando l'impostazione del negozio che utilizza il prezzo normale per il calcolo dello sconto è attiva, la base è il prezzo normale.
wwpp_cart_subtotal_discount_eligible_itemFiltro$is_eligible (bool, default true)
$cart_item (array, dati articolo carrello)
$wholesale_role (array)
Decide se un articolo del carrello contribuisce al subtotale utilizzato per lo sconto sul subtotale del carrello. Restituisci false per escludere l'articolo.
wwpp_min_order_requirement_checkFiltro$apply (bool, il risultato del controllo)
$cart_total (float, totale carrello all'ingrosso)
$cart_items (float, quantità totale articoli)
$cart (WC_Cart)
$wholesale_role (array)
Modifica il risultato del controllo dell'ordine minimo per gli sconti del carrello. Lo sconto sul subtotale del carrello si applica solo quando il risultato è esattamente true.
wwpp_add_wholesale_role_general_discount_mappingAzioneNessunoEseguito dopo il salvataggio di uno sconto generale per un ruolo all'ingrosso.
wwpp_edit_wholesale_role_general_discount_mappingAzioneNessunoEseguito dopo l'aggiornamento dello sconto generale di un ruolo all'ingrosso.
wwpp_process_category_products_in_apiFiltro$products_in_api (bool, default false)
$category_id (int, l'ID del termine della categoria)
Imposta quale codice aggiorna i flag dei prezzi all'ingrosso dei prodotti in una categoria. Quando restituisce true, l'API REST dello sconto categoria esegue l'aggiornamento e la schermata di modifica della categoria la salta.
wwpp_meta_dataFiltro$meta_data (array, dati all'ingrosso, valori vuoti rimossi)
$product (WC_Product)
$request (WP_REST_Request)
Modifica i dati all'ingrosso che l'API REST dei prodotti all'ingrosso restituisce per un prodotto.
wwpp_api_update_wholesale_roles_filterFiltro$wholesale_roles (array, tutti i ruoli registrati)
$request (WP_REST_Request)
Modifica l'elenco dei ruoli all'ingrosso prima che l'API REST lo salvi. Viene eseguito quando un ruolo viene creato o aggiornato tramite l'API.
wwpp_sales_transient_expiration_constantFiltro$expiration (int, secondi, predefinito HOUR_IN_SECONDS)Imposta per quanto tempo la risposta del report vendite rimane memorizzata nella cache.
wwpp_disable_abilitiesFiltro$disabled (bool, default false)Restituisce true per disattivare le funzionalità che questo plugin registra.

Esempio: escludi una categoria di prodotti dallo sconto sul subtotale del carrello

Questo esempio esclude gli articoli nella categoria gift-cards dal subtotale utilizzato dallo sconto sul subtotale del carrello.

add_filter( 'wwpp_cart_subtotal_discount_eligible_item', function ( $is_eligible, $cart_item, $wholesale_role ) {
	if ( has_term( 'gift-cards', 'product_cat', $cart_item['product_id'] ) ) {
		return false;
	}
	return $is_eligible;
}, 10, 3 );

WooCommerce Wholesale Order Form

WooCommerce Wholesale Order Form dispone di hook per le richieste REST del modulo d'ordine, la ricerca dei prodotti, il caricamento delle varianti e gli script del modulo.

HookTipoArgomentiCosa cambia
wwof_rest_read_permissionsFiltro$permission (bool, il risultato delle regole del modulo d'ordine)
$object_id (int|string, l'ID dell'oggetto, o 0 per una collezione)
$post_type (string, tipo di post o tassonomia)
Concede o rifiuta una lettura REST che le regole del modulo d'ordine hanno rifiutato. Viene eseguito solo per le letture in contesto di visualizzazione sulle rotte utilizzate dal modulo d'ordine. Un valore true non raggiunge mai un oggetto che non è pubblicato.
wwof_wc_rest_prepare_product_objectFiltro$response (WP_REST_Response)
$wc_data (WC_Product)
$request (WP_REST_Request)
$wc (WC, l'oggetto di integrazione WooCommerce del modulo d'ordine)
Modifica i dati del prodotto che la richiesta REST del modulo d'ordine restituisce per un prodotto.
wwof_product_type_termsFiltro$product_type_terms (array, slug dei tipi di prodotto)Imposta i tipi di prodotto che il modulo d'ordine elenca. L'impostazione predefinita è simple, grouped e external quando le varianti vengono mostrate individualmente. Altrimenti include anche variable. Aggiungi un tipo, come bundle, per elencarlo.
wwof_search_post_clauses_requestFiltro$clauses (array, clausole SQL)
$wc (WC, l'oggetto di integrazione WooCommerce del modulo d'ordine)
Modifica le clausole SQL della ricerca prodotti nel modulo d'ordine.
wwof_force_load_form_postsFiltro$form_posts (array, vuoto per impostazione predefinita)Forza il caricamento dello script del modulo d'ordine in una pagina. Restituisce un array di oggetti modulo d'ordine indicizzati per ID modulo quando lo shortcode non viene rilevato.
wwof_login_urlFiltro$login_url (string)Modifica l'URL di login utilizzato dallo script del modulo d'ordine.
wwof_min_requirement_current_user_idFiltro$user_id (int, l'impostazione predefinita è l'ID utente corrente)Modifica l'ID utente che il modulo d'ordine utilizza per cercare i requisiti minimi d'ordine.
wwof_required_pluginsFiltro$required_plugins (array, percorsi file plugin)Modifica l'elenco dei plugin che devono essere attivi. Il modulo d'ordine segnala ogni plugin elencato che non è attivo.
wwof_after_register_order_form_post_typeAzione$post_type (string, il nome del tipo di post del modulo d'ordine)Eseguito dopo la registrazione del tipo di post del modulo d'ordine.
wwof_variations_max_requestsFiltro$variations_max_requests (int, predefinito 12)Imposta quante richieste di elenco varianti il modulo d'ordine invia contemporaneamente. Il valore più basso è 1.
wwof_variations_response_cache_bypassFiltro$bypass (bool, predefinito false)
$request (WP_REST_Request)
$user_id (int, 0 per gli ospiti)
Restituisci true per saltare la cache della risposta delle varianti per una richiesta. Usalo quando un altro plugin imposta i prezzi per utente o per sessione.
wwof_variations_response_cache_ttlFiltro$ttl (int, secondi, predefinito 5 minuti)
$request (WP_REST_Request)
$product_id (int, l'ID del prodotto padre)
Imposta per quanto tempo rimane memorizzata nella cache una risposta delle varianti.
wwof_disable_abilitiesFiltro$disable (bool, predefinito false)Restituisce true per disattivare le funzionalità che questo plugin registra.

Esempio: accorcia la cache delle varianti

Questo esempio mantiene le risposte delle varianti memorizzate nella cache per un minuto.

add_filter( 'wwof_variations_response_cache_ttl', function ( $ttl, $request, $product_id ) {
	return MINUTE_IN_SECONDS;
}, 10, 3 );

Comando WP-CLI: migra moduli d'ordine

Esegui questo comando per migrare i moduli d'ordine dal formato versione 2 al formato versione 3. Il comando salva una copia delle vecchie impostazioni di ogni modulo nei metadati del post _settings prima di migrare il modulo.

wp wwof migrate_forms_settings

Per migrare solo alcuni moduli, aggiungi uno o più ID di moduli d'ordine dopo il nome del comando:

wp wwof migrate_forms_settings 123 456

Senza ID, il comando migra tutti i moduli versione 2. Se non trova moduli, mostra l'errore Nessun modulo trovato.

Il plugin ha anche altri due comandi WP-CLI. Usa wp wwof export_order_forms [<format>] per esportare i moduli come json o yml. Usa wp wwof import_v2_forms_from_json_file <json_file_path> per importare moduli versione 2 da un file JSON.

WooCommerce Wholesale Lead Capture

WooCommerce Wholesale Lead Capture ha hook per il ciclo di vita del lead, il modulo di registrazione, i reindirizzamenti di login, le email e l'API REST dei Lead. Ogni azione del lead passa un oggetto WP_User.

HookTipoArgomentiCosa cambia
wwlc_action_before_approve_userAzione$user (WP_User)Eseguito prima che WooCommerce Wholesale Lead Capture approvi un lead.
wwlc_action_after_approve_userAzione$user (WP_User)Eseguito dopo che il lead è stato approvato e l'email di approvazione è stata inviata.
wwlc_action_before_reject_userAzione$user (WP_User)Eseguito prima che un lead venga rifiutato. Non viene eseguito per un lead già rifiutato.
wwlc_action_after_reject_userAzione$user (WP_User)Eseguito dopo che un lead è stato rifiutato. Al lead viene assegnato il ruolo di Rifiutato, oppure l'account viene eliminato se le impostazioni lo indicano.
wwlc_action_before_activate_userAzione$user (WP_User)Eseguito prima che un account lead venga attivato.
wwlc_action_after_activate_userAzione$user (WP_User)Eseguito dopo che un account lead è stato contrassegnato come attivo.
wwlc_action_before_deactivate_userAzione$user (WP_User, i ruoli prima della modifica)Eseguito prima che un account lead venga disattivato. Viene eseguito anche quando l'API REST dei Lead disattiva un lead.
wwlc_action_after_deactivate_userAzione$user (WP_User)Eseguito dopo che un account lead è stato disattivato. All'utente viene assegnato il ruolo di cliente e viene disconnesso da tutte le sessioni.
wwlc_action_after_create_wholesale_leadAzione$new_lead (WP_User)Eseguito dopo la registrazione di un lead e dopo l'elaborazione dell'approvazione automatica. Viene eseguito anche quando un cliente esistente effettua l'aggiornamento a un account wholesale.
wwlc_stop_registeringFiltro$stop (bool, predefinito false)
$user_data (array, i dati del modulo inviati)
Restituisce true per interrompere la registrazione. Il modulo mostra l'errore "Non è consentita la registrazione."
wwlc_login_redirect_urlFiltro$redirect_url (string)
$user (WP_User)
Modifica l'URL in cui un utente viene reindirizzato dopo il login dal modulo di login wholesale. Si applica anche al login di WooCommerce (ad esempio, Il mio account) quando l'utente ha un ruolo wholesale.
wwlc_registration_form_fieldsFiltro$form_fields (array, campi predefiniti, personalizzati e reCAPTCHA, ordinati per ordine)Modifica i campi visualizzati dal modulo di registrazione.
wwlc_filter_{field}_field_form_labelFiltro$label (string, l'etichetta predefinita tradotta)Modifica l'etichetta di un campo di registrazione predefinito. Sostituisci {field} con uno dei seguenti: first_name, last_name, phone, email, company, country, address1, address2, city, state, postcode, password. Ad esempio, wwlc_filter_first_name_field_form_label.
wwlc_email_format_stringFiltro$text (string, contenuto email dopo la sostituzione dei segnaposto)
$wc_email (WC_Email)
Modifica il testo di un'email di WooCommerce Wholesale Lead Capture dopo che i segnaposto sono stati sostituiti.
wwlc_default_email_lead_roleFiltro$role (string, default wholesale_customer)Imposta il ruolo utilizzato per selezionare il lead di esempio per gli oggetti email. Il ruolo impostato nelle impostazioni del ruolo del lead lo sovrascrive quando tale impostazione non è vuota.
wwlc_rest_api_routesFiltro$routes (array, definizioni di route)Aggiunge o modifica le route dell'API REST dei Lead nello spazio dei nomi wwlc/v1. Ogni route è indicizzata come leads/<route>.
wwlc_disable_abilitiesFiltro$disabled (bool, default false)Restituisce true per disattivare le funzionalità che questo plugin registra. La costante WWLC_DISABLE_ABILITIES fa lo stesso.

Esempio: esegui codice quando approvi un lead

Questo esempio salva un flag sull'utente dopo l'approvazione. Uno script di sincronizzazione può leggere il flag in seguito.

add_action( 'wwlc_action_after_approve_user', function ( $user ) {
	update_user_meta( $user->ID, 'needs_crm_sync', 'yes' );
} );

WooCommerce Wholesale Quotes

WooCommerce Wholesale Quotes ha filtri per i dati delle quotazioni, l'etichetta del pulsante di quotazione, le opzioni del front-end e le autorizzazioni dell'API REST.

HookTipoArgomentiCosa cambia
wholesale_quotes_api_admin_permissions_checkFiltro$response (true|WP_Error, true se l'utente ha manage_woocommerce)
$request (WP_REST_Request)
Modifica il controllo delle autorizzazioni delle route REST dell'amministratore. Restituisci true per consentire la richiesta o un WP_Error per rifiutarla.
wholesale_quotes_quote_items_dataFiltro$data (array, oggetti articolo della quotazione)Modifica l'elenco degli articoli della quotazione prima che il plugin lo utilizzi. Si applica agli articoli di una quotazione e all'elenco degli articoli della quotazione.
wholesale_quotes_quote_item_product_dataFiltro$product (array, dati del prodotto dell'articolo della quotazione)
$item_product_id (int)
Modifica i dati del prodotto di un articolo della quotazione. I dati includono immagine, link, stato dello stock e tipo di prodotto.
wws_wq_quote_button_shop_labelFiltro$label (string, il default è l'etichetta nelle impostazioni della quotazione)Modifica l'etichetta del pulsante di quotazione nelle pagine del negozio.
wws_wq_guest_quote_products_dataFiltro$products (array, oggetti articolo della quotazione)
$product_data (array, i dati del prodotto dalla richiesta)
Modifica i prodotti restituiti dalla route delle quotazioni per ospiti.
wholesale_quotes_optionsFiltro$options (array, opzioni del front-end)Modifica l'array delle opzioni utilizzato dal front-end delle quotazioni. Ha chiavi come title, description e quoteUrl.
wwq_disable_abilitiesFiltro$disabled (bool, default false)Restituisce true per disattivare le funzionalità che questo plugin registra.

Esempio: cambia l'etichetta del pulsante di preventivo

Questo esempio cambia l'etichetta del pulsante di preventivo nelle pagine del negozio.

add_filter( 'wws_wq_quote_button_shop_label', function ( $label ) {
	return __( 'Request pricing', 'your-text-domain' );
} );

WooCommerce Wholesale Payments

WooCommerce Wholesale Payments ha filtri per la pianificazione delle fatture, il piano di pagamento e le query degli ordini, la versione dell'API Stripe e i modelli di email di promemoria.

HookTipoArgomentiCosa cambia
wpay_filter_cron_scheduleFiltro$cron_schedule (string, default è la pianificazione salvata, daily se nessuna)Imposta l'intervallo dell'azione di fatturazione ricorrente. Il plugin lo legge solo quando crea tale azione, quindi non cambia una pianificazione esistente. Usa daily, hourly o 15min. Qualsiasi altro valore viene eseguito giornalmente.
wpay_get_payment_plansFiltro$args (array, argomenti WP_Query)Modifica gli argomenti della query che caricano i piani di pagamento. Il plugin imposta il tipo di post dopo l'esecuzione del filtro.
wpay_get_payment_ordersFiltro$args (array, argomenti wc_get_orders())Modifica gli argomenti della query che caricano gli ordini di pagamento. Il plugin limita la dimensione della pagina dopo l'esecuzione del filtro.
wpay_stripe_api_versionFiltro$version (string, la versione dell'API Stripe utilizzata dal plugin)Modifica la versione dell'API Stripe nell'intestazione della richiesta. Imposta anche la versione quando il plugin crea un webhook Stripe.
wpay_payment_due_today_email_template_htmlFiltro$template (string, default payment-due-today.php)Modifica il file del modello HTML dell'email di pagamento in scadenza oggi.
wpay_payment_due_today_email_template_plainFiltro$template (string, default payment-due-today.php)Modifica il file del modello di testo normale dell'email di pagamento in scadenza oggi.
wpay_payment_overdue_email_template_htmlFiltro$template (string, default payment-overdue.php)Modifica il file del modello HTML dell'email di pagamento in ritardo.
wpay_payment_overdue_email_template_plainFiltro$template (string, default payment-overdue.php)Modifica il file del modello di testo normale dell'email di pagamento in ritardo.
wpay_disable_abilitiesFiltro$disabled (bool, default false)Restituisce true per disattivare le funzionalità che questo plugin registra.

Invoice Gateway per WooCommerce

Invoice Gateway per WooCommerce ha hook per la data di scadenza della fattura, lo stato dell'ordine, gli ordini gratuiti e le fatture scadute.

HookTipoArgomentiCosa cambia
igfw_invoice_due_dateFiltro$due (int, timestamp Unix)
$order (WC_Order)
Modifica la data di scadenza di un ordine fattura. Il valore predefinito è la data dell'ordine più i termini di pagamento in giorni. Un valore pari o inferiore a 0 viene ignorato.
igfw_invoice_gateway_default_order_statusFiltro$status (string, predefinito è lo stato dell'ordine salvato, on-hold se nessuno)Modifica lo stato che il gateway assegna a un ordine al momento del checkout.
igfw_show_invoice_gateway_on_free_ordersFiltro$show (bool, predefinito true)Restituisci false per nascondere il gateway fattura quando il totale del carrello è zero.
igfw_invoice_gateway_constructAzioneNessunoEseguito alla fine del costruttore del gateway fattura.
igfw_invoice_payment_overdueAzione$order (WC_Order, l'ordine scaduto)Eseguito quando il plugin trova un ordine fattura scaduto, dopo aver inviato l'email di scadenza all'amministratore del negozio. Il plugin non addebita l'ordine. Usa questo hook per avviare il tuo processo.

Esempio: aggiungi sette giorni alla data di scadenza della fattura

Questo esempio posticipa di sette giorni la data di scadenza di ogni fattura.

add_filter( 'igfw_invoice_due_date', function ( $due, $order ) {
	return $due + ( 7 * DAY_IN_SECONDS );
}, 10, 2 );

Serve aiuto?

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

Questo articolo è stato utile?

Articoli Correlati

Completa il tuo acquisto