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 头版展示。

我们提供了一个现场演示,您可以随时测试后端和前端:现场演示

如果您对文章、插件有任何疑问,或者只是想打个招呼,请不要害羞! 欢迎与您友好的社区插件开发人员联系。