WooCommerce B2B:如何建立批發商店
已發表: 2020-06-09電子商務行業年復一年地出現令人難以置信的增長,而且看不到可預見的終結。 B2B 電子商務也是如此,但是對於想要批發銷售的中小型企業來說,沒有太多好的平台選擇。 市場上有幾種 SaaS 解決方案,但這些解決方案成本高昂、封閉源代碼,並且主要面向大型企業。
如果您是企業主或開發人員,WooCommerce 是一個免費、多功能且功能強大的解決方案。
WooCommerce 適合 B2B 商店嗎?
“開箱即用”,它不是。 WooCommerce 是電子商務商店的絕佳解決方案,但它不是專門為批發開發的,因此一開始它缺乏許多重要的選擇。 但是,您可以使用 B2BKing 等功能強大的批發插件來擴展 WooCommerce 並添加您可能需要的所有企業對企業功能。
在為您的 B2B 項目選擇 WooCommerce 時,您還應該注意另外兩個方面:
- WooCommerce 將需要定期更新插件以確保其安全且正常工作。
- 根據您的主機和網站配置,WordPress 環境有時會運行得有點慢。 但是,有一些方法可以優化和加速它,例如通過 WP Rocket 之類的插件(或其他緩存和優化插件)。
雖然它並不完美,但 WooCommerce 目前正在為全球 20% 以上的在線商店提供支持,這有充分的理由:它是免費的、開源的、強大的和安全的。 這些相同的品質也使其成為批發商店的絕佳選擇。
B2B 商店與典型的電子商店有何不同?
與直接向消費者銷售相比,企業對企業的銷售通常是一種非常不同且更加個人化的體驗。 商業買家知識淵博,願意談判,並希望在批量購買時獲得優惠和折扣。 價格目錄、折扣選項以及付款和運輸選項可能因客戶而異,具體取決於業務規模、訂單規模或現有業務關係等因素。
從網站開發的角度來看,這意味著在定價、折扣、運輸和訂單規則方面需要高度的技術靈活性。
向企業銷售還引入了對以下功能的需求:
- 為客人隱瞞價格
- 商業登記表
- 增值稅(或其他稅號)號碼支持
- 免稅
- 報價請求
- 自定義計費和結帳字段
- 批發訂單
- 能夠支持買方帳戶上的多個用戶(對於公司結構)
讓我們繼續看看如何在 WooCommerce 中實現其中一些功能。 接下來的部分將更多地面向開發人員,我將分享一些希望對您有所幫助的代碼片段,以及您可以使用的免費插件。
1. 為訪客用戶隱藏價格
讓我們從一個簡單的開始。 您可以使用兩個 WooCommerce 過濾器來做到這一點。 首先,讓我們使用woocommerce_get_price_html將顯示的價格更改為“登錄查看價格”。
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;
}
}
完成此操作後,價格將不再可見,將被我們的文本替換。 但這還不夠,因為用戶仍然可以將這些產品添加到購物車並查看它們的價格。 恰當命名的woocommerce_is_purchasable過濾器為我們提供了一個解決方案。
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;
}
}
添加後,訪客用戶將無法再購買產品,並且“添加到購物車”按鈕將不再可用。 值得一提的另一件事是,您在使用 AJAX 搜索表單時可能會遇到麻煩,這取決於這些表單的設置方式。 解決該問題的一種快速方法是將上述代碼添加到您的主代碼中,並通過將代碼包裝在其中來檢查 AJAX :
if ( wp_doing_ajax() ){
// code here
}
最終結果:
如果您對插件替代品感興趣,因為您不熟悉編碼,B2BKing 具有此功能和其他訪客訪問限制功能,例如完全隱藏網站的選項,或隱藏單個產品或類別的價格。
2. 商業登記,或分開的 B2B 和 B2C 登記表
您在這裡要做的是添加自定義字段,例如“公司名稱”、“地址”、“增值稅 ID”等。
您可以使用此代碼為公司名稱添加自定義字段:
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">';
}
如果您想在註冊時將此字段與公司名稱的 WooCommerce 計費字段同步,您可以使用woocommerce_created_customer掛鉤並將公司名稱保存為用戶元數據,使用 WooCommerce 使用的相同字段:billing_first_name、billing_company、billing_city、 ETC:
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 );
}
}
如何創建單獨的 B2B 和 B2C 表單域? 您可以按照上述方式在註冊中添加“選擇”字段,並使用一些 JavaScript 來確定用戶是選擇“個人”還是“公司”。 根據用戶的選擇顯示或隱藏公司名稱等註冊字段。
如果您希望避免編碼,可以使用一些免費的插件解決方案來擴展註冊,例如 https://wordpress.org/plugins/user-registration/ 也有多個註冊表單的選項,但創建 B2B 特定的註冊可能需要在你身邊做一些額外的工作。
如果您正在尋找高級解決方案,B2BKing 提供了一些方便、易於使用的短代碼,您可以將其添加到任何頁面並創建商業登記表。
3.批發訂單
商業客戶通常確切地知道他們想要什麼,直到 SKU,因此在您的網站上添加批發訂單可以快速為您的客戶訂購,讓您看起來很專業。
你怎麼能加一個? 沒有快速的代碼片段可以做到這一點,所以我認為插件是你最好的解決方案。
有一個我親自測試過的免費插件,看起來效果很好:https://wordpress.org/plugins/woocommerce-bulk-order-form/
B2BKing 也有自己的專有實現,您可以在下圖中看到:
4.批發價格結構
這裡的相關問題是:如何為不同的用戶設置不同的價格? 有兩種方法可以解決這個問題:直接更改價格,或添加折扣。
要為用戶或用戶類別添加購物車折扣,請使用以下代碼:
add_action( 'woocommerce_cart_calculate_fees', 'b2bking_cart_discount' );
function b2bking_cart_discount( $cart ){
$cart->add_fee( 'B2B Discount', -10 );
}
上面的代碼通過添加負費用(即折扣)使用了一些技巧。 上面的代碼沒有多大作用,它只是為所有用戶增加了 10 美元的折扣。 讓我們稍微擴展一下代碼:
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 );
}
}
這個怎麼樣? 現在,代碼檢查用戶的元狀態是否為“ b2b” ,並僅向 b2b 用戶提供折扣。
你如何設置元狀態? 您可以使用我在第 2 篇文章部分中使用的woocommerce_created_customer鉤子和一行簡單的代碼在註冊時設置它。 函數update_user_meta用於更新和創建用戶元數據。
update_user_meta( $user_id, 'user_status', 'b2b' );
如果你想為不同的用戶為不同的產品設置不同價格的複雜結構怎麼辦?
這有點複雜,但您可以使用相同的原理。 在 WooCommerce 中,產品是“帖子”,您可以為其設置帖子元數據。 例如,您可以添加一個名為 b2b_price 的帖子元數據,以便為 b2b 用戶提供單獨的價格。 這是代碼。
update_post_meta( $post_id, 'b2b_price', 15 ); // 15 is the price for b2b users
您如何僅向 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. 設置免稅
這比你想像的要容易! 您可以在 WooCommerce 中使用一個非常方便的功能,它可以為您執行此操作,甚至在大多數情況下處理價格顯示: set_is_vat_exempt() 。 好名字,對吧?
此功能甚至可以讓 B2B 用戶看到後綴為“不含稅”的價格,而 B2C 用戶看到的價格顯示為“含稅”。
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 和批發插件
我希望我上面分享的一些內容對你有所幫助。 不過,為 WooCommerce 配備 B2B 功能是一項複雜的任務,如果您認為購買高級插件比自己編寫代碼更好地利用您的時間,我不會責怪您真的,我根本不會評判您。
考慮到這一點,我將分享一些關於 B2BKing 的內容。 這是我和我的團隊已經開展了一段時間的項目,目標是將 WooCommerce 轉變為功能強大的 B2B 解決方案,替代昂貴的 SAAS 平台。
作為一個長期項目,我們不斷開發和支持它,目前它具有超過 137 種功能,包括商業登記、免稅、動態定價規則、增值稅支持、內置消息系統、賬戶上的多個買家、優惠、專用的 B2B&B2C 混合模式,等等。
本週,我們很自豪能夠被 Envato 親自挑選為“本週精選插件”,並在 CodeCanyon 頭版展示。
我們提供了一個現場演示,您可以隨時測試後端和前端:現場演示
如果您對文章、插件有任何疑問,或者只是想打個招呼,請不要害羞! 歡迎與您友好的社區插件開發人員聯繫。