WooCommerce B2B: come creare un negozio all'ingrosso
Pubblicato: 2020-06-09
Il settore dell'e-commerce sta assistendo a una crescita incredibile, anno dopo anno, senza una fine prevedibile in vista. Lo stesso vale per l'e-commerce B2B, ma non ci sono molte buone scelte di piattaforma disponibili per le piccole e medie imprese che vogliono vendere all'ingrosso. Esistono diverse soluzioni SaaS sul mercato, ma sono costose, closed-source e per lo più orientate alle aziende più grandi.
Se sei un imprenditore o uno sviluppatore, WooCommerce è una soluzione gratuita, versatile e potente.
WooCommerce è adatto ai negozi B2B?
"Out-of-the-box", non lo è. WooCommerce è una soluzione fantastica per i negozi di e-commerce, ma non è stato sviluppato specificamente per il commercio all'ingrosso, quindi all'inizio mancano molte opzioni importanti. Tuttavia, puoi utilizzare un potente plug-in all'ingrosso come B2BKing per estendere WooCommerce e aggiungere tutte le funzionalità business-to-business di cui potresti aver bisogno.
Ci sono altri due aspetti di cui dovresti essere consapevole quando scegli WooCommerce per il tuo progetto B2B:
- WooCommerce richiederà aggiornamenti regolari del plug-in per garantire che sia sicuro e funzioni correttamente.
- A seconda della configurazione dell'hosting e del sito Web, l'ambiente WordPress a volte può funzionare un po' lentamente. Tuttavia, ci sono modi per ottimizzarlo e accelerarlo, ad esempio tramite plug-in come WP Rocket (o altri plug-in di memorizzazione nella cache e ottimizzazione).
Sebbene non sia perfetto, WooCommerce attualmente alimenta oltre il 20% dei negozi online del mondo e ci sono buone ragioni per questo: è gratuito, open source, potente e sicuro. Queste stesse qualità lo rendono anche un'ottima scelta per i negozi all'ingrosso.
In cosa differisce un negozio B2B da un tipico e-store?
La vendita da impresa a impresa è spesso un'esperienza molto diversa e più personale rispetto alla vendita diretta ai consumatori. Gli acquirenti aziendali sono informati, aperti alla negoziazione e desiderano ottenere ottime offerte e sconti per l'acquisto all'ingrosso. I cataloghi dei prezzi, le opzioni di sconto e le opzioni di pagamento e spedizione possono variare notevolmente da cliente a cliente, a seconda di fattori quali le dimensioni dell'azienda, le dimensioni dell'ordine o le relazioni commerciali esistenti.
Dal punto di vista dello sviluppo di siti Web, ciò si traduce nella necessità di un elevato grado di flessibilità tecnica in termini di prezzi, sconti, spedizione e regole di ordine.
La vendita alle aziende introduce anche la necessità di funzionalità come:
- Nascondere i prezzi per gli ospiti
- Modulo di registrazione dell'impresa
- Supporto per partita IVA (o altro codice fiscale).
- Esenzioni fiscali
- Richieste di preventivo
- Campi di fatturazione e checkout personalizzati
- Modulo d'ordine all'ingrosso
- Possibilità di supportare più utenti su un account acquirente (per strutture aziendali)
Andiamo avanti e guardiamo come alcune di queste funzionalità possono essere implementate in WooCommerce. Le prossime sezioni saranno più rivolte agli sviluppatori e condividerò alcuni frammenti di codice che spero troverai utili, oltre a plug-in gratuiti che puoi utilizzare.
1. Nascondi i prezzi per gli utenti ospiti
Cominciamo con uno facile. Puoi farlo con due filtri WooCommerce. Per prima cosa, utilizziamo woocommerce_get_price_html per modificare il prezzo visualizzato in "Accedi per visualizzare i prezzi".
add_filter( 'woocommerce_get_price_html', 'b2bking_hide_prices_guest_users', 10, 2 );
function b2bking_hide_prices_guest_users( $price, $product ){
if ( ! is_user_logged_in() ){
return esc_html__( 'Login to view prices', 'your-plugin-text-domain' );
} else {
return $price;
}
}
Una volta fatto ciò, i prezzi non sono più visibili e verranno sostituiti dal nostro testo. Questo però non è sufficiente, poiché l'utente può comunque aggiungere questi prodotti al carrello e vederne il prezzo. Una soluzione ci viene fornita dal filtro woocommerce_is_purchasable dal nome appropriato.
add_filter( 'woocommerce_is_purchasable', 'b2bking_disable_purchasable_guest_users' );
function b2bking_disable_purchasable_guest_users( $purchasable ){
if ( ! is_user_logged_in() ){
return false;
} else {
return $purchasable;
}
}
Dopo aver aggiunto questo, i prodotti non dovrebbero più essere acquistabili dagli utenti ospiti e il pulsante "aggiungi al carrello" non sarà più disponibile. Un'altra cosa che vale la pena ricordare è che potresti avere problemi quando usi i moduli di ricerca AJAX, a seconda di come sono impostati. Un modo rapido per risolvere il problema è anche aggiungere il codice sopra al codice principale e verificare la presenza di AJAX avvolgendo il codice all'interno :
if ( wp_doing_ajax() ){
// code here
}
Il risultato finale:
Se sei interessato a un'alternativa al plug-in perché non hai familiarità con la codifica, B2BKing ha questa e altre funzionalità di restrizione dell'accesso degli ospiti come un'opzione per nascondere completamente il sito Web o nascondere i prezzi per singoli prodotti o categorie.
2. Registrazione dell'impresa o moduli di registrazione B2B e B2C separati
Quello che vuoi fare qui è aggiungere campi personalizzati come "Nome azienda", "Indirizzo", "Partita IVA", ecc.
Puoi utilizzare questo codice per aggiungere un campo personalizzato per il nome dell'azienda:
add_action( 'woocommerce_register_form', 'b2bking_custom_registration_field' );
function b2bking_custom_registration_field(){
echo '<label>' . esc_html__( 'Company name', 'your-custom-text-domain' ) . '</label>';
echo '<input type="text" name="billing_company">';
}
Se desideri sincronizzare questo campo con il campo di fatturazione WooCommerce per il nome dell'azienda al momento della registrazione, puoi farlo utilizzando l'hook woocommerce_created_customer e salvando il nome dell'azienda come meta utente, utilizzando gli stessi campi utilizzati da WooCommerce: billing_first_name, billing_company, billing_city, eccetera:
add_action( 'woocommerce_created_customer', 'b2bking_save_custom_registration_fields' );
function b2bking_save_custom_registration_fields( $user_id ) {
$field_value = sanitize_text_field( filter_input( INPUT_POST, 'billing_company' ) );
if ( $field_value !== NULL ){
update_user_meta( $user_id, 'billing_company', $field_value );
}
}
Come puoi creare campi modulo B2B e B2C separati? Puoi aggiungere un campo "Seleziona" alla registrazione nel modo spiegato sopra e utilizzare un po' di JavaScript per determinare se l'utente ha scelto "Individuale" o "Azienda". Mostra o nascondi i campi di registrazione come il nome dell'azienda a seconda di ciò che l'utente sceglie.

Se desideri evitare la codifica, ci sono alcune soluzioni di plugin gratuite per estendere la registrazione, come https://wordpress.org/plugins/user-registration/ che hanno anche opzioni per più moduli di registrazione, sebbene la creazione di una registrazione specifica B2B potrebbe richiedere un po' di lavoro in più dalla tua parte.
Se stai cercando una soluzione premium, B2BKing fornisce alcuni codici brevi pratici e facili da usare che puoi aggiungere a qualsiasi pagina e creare un modulo di registrazione aziendale.
3. Modulo d'ordine all'ingrosso
I clienti aziendali spesso sanno esattamente cosa vogliono, fino allo SKU, quindi l'aggiunta di un modulo d'ordine all'ingrosso al tuo sito web rende veloce l'ordine per i tuoi clienti e ti fa sembrare professionale.
Come puoi aggiungerne uno? Non esiste uno snippet di codice rapido in grado di farlo, quindi penso che un plug-in sia la soluzione migliore.
C'è un plugin gratuito che ho testato personalmente, che sembra e funziona benissimo: https://wordpress.org/plugins/woocommerce-bulk-order-form/
B2BKing ha anche una sua implementazione proprietaria, che puoi vedere nella prossima immagine:
4. Struttura dei prezzi all'ingrosso
La domanda rilevante qui è: come impostare prezzi diversi per utenti diversi? Ci sono 2 modi per farlo: cambiare direttamente il prezzo o aggiungere uno sconto.
Per aggiungere uno sconto al carrello per un utente o una categoria di utenti, utilizza questo codice:
add_action( 'woocommerce_cart_calculate_fees', 'b2bking_cart_discount' );
function b2bking_cart_discount( $cart ){
$cart->add_fee( 'B2B Discount', -10 );
}
Il codice sopra usa un trucco aggiungendo una commissione negativa, che è uno sconto. Il codice sopra non fa molto, aggiunge solo uno sconto di 10 dollari per tutti gli utenti. Espandiamo un po' il codice:
function b2bking_cart_discount( $cart ){
$user_id = get_current_user_id();
$user_status = get_user_meta( $user_id, 'user_status', true );
if ( $user_status === 'b2b' ){
$cart->add_fee( 'B2B Discount', -10 );
}
}
Com'è questo? Ora il codice controlla se il meta stato dell'utente è ' b2b' e offre uno sconto solo agli utenti b2b.
Come si imposta il meta stato? Puoi impostarlo al momento della registrazione utilizzando l'hook woocommerce_created_customer che ho usato sopra nella sezione del 2° articolo e una semplice riga di codice. La funzione update_user_meta viene utilizzata sia per l'aggiornamento che per la creazione di meta utente.
update_user_meta( $user_id, 'user_status', 'b2b' );
Cosa succede se si desidera impostare strutture complesse di prezzi diversi per prodotti diversi per utenti diversi?
Questo diventa un po' più complicato, ma puoi usare gli stessi principi. In WooCommerce, un prodotto è un "post" e puoi impostare i metadati del post per esso. Ad esempio, puoi aggiungere un meta post chiamato b2b_price, per avere un prezzo separato per gli utenti b2b. Ecco il codice.
update_post_meta( $post_id, 'b2b_price', 15 ); // 15 is the price for b2b users
Come mostri questo prezzo solo agli utenti b2b?
add_filter('woocommerce_product_get_price', 'b2bking_fixed_price', 99, 2 );
add_filter('woocommerce_product_get_regular_price', 'b2bking_fixed_price', 99, 2 );
add_filter('woocommerce_product_variation_get_regular_price', 'b2bking_fixed_price', 99, 2 );
add_filter('woocommerce_product_variation_get_price', 'b2bking_fixed_price', 99, 2 );
function b2bking_fixed_price( $price, $product ) {
// check if the user is B2B or not
$current_user_id = get_current_user_id();
$current_user_status = get_user_meta( $current_user_id, 'user_status', true );
if ( $current_user_status !== 'b2b' ){
// if user is not b2b show the normal price
return $price;
} else {
// get the current product’s price for B2B users
$current_product_id = $product->get_id();
$b2b_price = get_post_meta( $current_product_id, 'b2b_price', true );
return $b2b_price;
}
}
5. Istituzione di esenzioni fiscali
Questo è più facile di quanto pensi! C'è una funzione molto utile che puoi usare in WooCommerce che lo farà per te e si occuperà anche della visualizzazione dei prezzi nella maggior parte delle situazioni: set_is_vat_exempt() . Bel nome, vero?
Questa funzione farà anche in modo che gli utenti B2B vedano i prezzi con il suffisso "tasse escluse", mentre gli utenti B2C vedano i prezzi che dicono "tasse incluse".
add_action( 'init', 'b2bking_tax_exemption' );
function b2bking_tax_exemption(){
// first we check if the user is tax exempt
$tax_exempt = get_user_meta( get_current_user_id(), 'is_tax_exempt', true );
if ( $tax_exempt === 'exempt' ){
$customer = WC()->customer;
$customer->set_is_vat_exempt( true );
} else {
// the next line is only necessary if the user’s exempt status changes dynamically, such as based on billing country
$customer->set_is_vat_exempt( false );
}
}
B2BKing – WooCommerce B2B e plugin all'ingrosso
Spero che parte di ciò che ho condiviso sopra ti sarà utile. Tuttavia, dotare WooCommerce di funzionalità B2B è un compito complesso, e non ti biasimerei se decidessi di acquistare un plug-in premium è un uso migliore del tuo tempo piuttosto che scrivere il codice da solo. Davvero, non ti giudicherò affatto.
Con questo in mente, condividerò alcune parole sul B2BKing. Questo è un progetto su cui io e il mio team stiamo lavorando da un po', con l'obiettivo di trasformare WooCommerce in una soluzione B2B capace, un'alternativa alle costose piattaforme SAAS.
Lo sviluppiamo e lo supportiamo costantemente come un progetto a lungo termine e attualmente ha più di 137 funzionalità tra cui registrazione aziendale, esenzioni fiscali, regole di prezzo dinamico, supporto IVA, sistema di messaggistica integrato, più acquirenti in conto, offerte, una modalità ibrida B2B&B2C dedicata e molto altro ancora.
Questa settimana, siamo orgogliosi di essere stati scelti da Envato come " Plugin in primo piano della settimana " e presentati sulla prima pagina di CodeCanyon.
Offriamo una demo dal vivo che puoi testare in qualsiasi momento, sia backend che frontend: Live Demo
Se hai domande sull'articolo, sul plugin o vuoi semplicemente salutarti, non essere timido! Sentiti libero di contattare il tuo amichevole sviluppatore di plugin di quartiere.