WooCommerce B2B: Como configurar uma loja de atacado

Publicados: 2020-06-09

O setor de comércio eletrônico está vendo um crescimento incrível, ano após ano, sem fim previsível à vista. O mesmo vale para o comércio eletrônico B2B, mas não há muitas boas opções de plataforma disponíveis para pequenas e médias empresas que desejam vender no atacado. Existem várias soluções SaaS no mercado, mas são caras, de código fechado e principalmente voltadas para empresas maiores.

Se você é proprietário de uma empresa ou desenvolvedor, o WooCommerce é uma solução gratuita, versátil e poderosa.

O WooCommerce é adequado para lojas B2B?

“Out-of-the-box”, não é. O WooCommerce é uma solução fantástica para lojas de comércio eletrônico, mas não foi desenvolvido especificamente para atacado, por isso carece de muitas opções importantes no início. No entanto, você pode usar um poderoso plugin de atacado como o B2BKing para estender o WooCommerce e adicionar todas as funcionalidades business-to-business que você possa precisar.

Existem dois outros aspectos que você deve estar ciente ao escolher o WooCommerce para seu projeto B2B:

  • O WooCommerce exigirá atualizações regulares de plugins para garantir que seja seguro e funcione corretamente.
  • Dependendo da sua hospedagem e configuração do site, o ambiente WordPress às ​​vezes pode ter um desempenho um pouco lento. No entanto, existem maneiras de otimizar e acelerá-lo, como por meio de plugins como WP Rocket (ou outros plugins de cache e otimização).

Embora não seja perfeito, o WooCommerce está atualmente alimentando mais de 20% das lojas online do mundo, e há boas razões para isso: é gratuito, de código aberto, poderoso e seguro. Essas mesmas qualidades também o tornam uma ótima opção para lojas de atacado.

Como uma loja B2B difere de uma loja virtual típica?

Vender business-to-business costuma ser uma experiência muito diferente e mais pessoal do que vender diretamente aos consumidores. Os compradores de negócios são conhecedores, abertos à negociação e desejam obter ótimas ofertas e descontos para compras em grandes quantidades. Catálogos de preços, opções de desconto e opções de pagamento e envio podem variar muito de cliente para cliente, dependendo de fatores como tamanho da empresa, tamanho do pedido ou relações comerciais existentes.

Do ponto de vista do desenvolvimento de sites, isso se traduz na necessidade de um alto grau de flexibilidade técnica quando se trata de preços, descontos, envio e regras de pedidos.

Vender para empresas também introduz a necessidade de recursos como:

  • Ocultar preços para hóspedes
  • Formulário de cadastro comercial
  • Suporte ao número de IVA (ou outro número de identificação fiscal)
  • Isenções fiscais
  • Solicitações de cotação
  • Campos personalizados de faturamento e checkout
  • Formulário de pedido por atacado
  • Capacidade de oferecer suporte a vários usuários em uma conta de comprador (para estruturas corporativas)

Vamos ver como alguns desses recursos podem ser implementados no WooCommerce. As próximas seções serão mais voltadas para desenvolvedores e compartilharei alguns trechos de código que espero que você ache úteis, bem como plugins gratuitos que você pode usar.

1. Ocultar preços para usuários convidados

Vamos começar com um fácil. Você pode fazer isso com dois filtros WooCommerce. Primeiro, vamos usar woocommerce_get_price_html para alterar o preço exibido para “Login para ver os preços”.

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;
}
}

Uma vez feito isso, os preços não estarão mais visíveis e serão substituídos pelo nosso texto. Isso não é suficiente, pois o usuário ainda pode adicionar esses produtos ao carrinho e ver seu preço. Uma solução nos é fornecida pelo filtro woocommerce_is_purchasable apropriadamente chamado.

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;
	}
}

Depois de adicionar isso, os produtos não poderão mais ser adquiridos por usuários convidados e o botão "adicionar ao carrinho" não estará mais disponível. Mais uma coisa que vale a pena mencionar é que você pode ter problemas ao usar formulários de pesquisa AJAX, dependendo de como eles estão configurados. Uma maneira rápida de corrigir isso é também adicionar o código acima ao seu código principal e verificar o AJAX envolvendo o código dentro :

if ( wp_doing_ajax() ){ 
// code here
}

O resultado final:

Se você estiver interessado em uma alternativa de plug-in porque não está familiarizado com codificação, o B2BKing possui esta e outras funcionalidades de restrição de acesso de convidados, como a opção de ocultar o site completamente ou ocultar preços de produtos ou categorias individuais.

2. Registro comercial ou formulários de registro B2B e B2C separados

O que você deseja fazer aqui é adicionar campos personalizados, como “Nome da empresa”, “Endereço”, “ID do IVA”, etc.

Você pode usar este código para adicionar um campo personalizado para o nome da empresa:

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 você deseja sincronizar este campo com o campo de faturamento do WooCommerce para o nome da empresa no registro, você pode fazer isso usando o gancho woocommerce_created_customer e salvando o nome da empresa como meta do usuário, usando os mesmos campos que o WooCommerce usa: 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 );
}
}

Como você pode criar campos de formulário B2B e B2C separados? Você pode adicionar um campo “Selecionar” ao registro da maneira explicada acima e usar um pouco de JavaScript para determinar se o usuário escolheu “Individual” ou “Empresa”. Mostre ou oculte campos de registro como o nome da empresa, dependendo do que o usuário escolher.

Se você deseja evitar a codificação, existem algumas soluções de plug-in gratuitas para estender o registro, como https://wordpress.org/plugins/user-registration/ que também têm opções para vários formulários de registro, embora a criação de registro específico para B2B possa exigir um pouco de trabalho extra do seu lado.

Se você está procurando uma solução premium, o B2BKing fornece alguns códigos de acesso úteis e fáceis de usar que você pode adicionar a qualquer página e criar um formulário de registro comercial.

3. Formulário de pedido por atacado

Os clientes corporativos geralmente sabem exatamente o que desejam, até o SKU, portanto, adicionar um formulário de pedido de atacado ao seu site agiliza o pedido para seus clientes e faz você parecer profissional.

Como você pode adicionar um? Não há um trecho de código rápido que possa fazer isso, então acho que um plug-in é sua melhor solução.

Há um plugin gratuito que eu testei pessoalmente, que parece e funciona muito bem: https://wordpress.org/plugins/woocommerce-bulk-order-form/

O B2BKing também possui sua própria implementação proprietária, que você pode ver na próxima imagem:

4. Estrutura de preços de atacado

A questão relevante aqui é: como configurar preços diferentes para usuários diferentes? Existem 2 maneiras de fazer isso: alterar o preço diretamente ou adicionar um desconto.

Para adicionar um desconto de carrinho para um usuário ou categoria de usuários, use este código:

add_action( 'woocommerce_cart_calculate_fees', 'b2bking_cart_discount' );

function b2bking_cart_discount( $cart ){
$cart->add_fee( 'B2B Discount', -10 );
}

O código acima usa um truque ao adicionar uma taxa negativa, que é um desconto. O código acima não faz muito, apenas adiciona um desconto de 10 dólares para todos os usuários. Vamos expandir um pouco o código:

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 );
	}
}

Como é isso? Agora o código verifica se o metastatus do usuário é ' b2b' e dá desconto apenas para usuários b2b.

Como você define o metastatus? Você pode definir isso no registro usando o gancho woocommerce_created_customer que usei acima na seção 2 do artigo e uma simples linha de código. A função update_user_meta é usada para atualizar e criar meta de usuário.

update_user_meta( $user_id, 'user_status', 'b2b' );

E se você quiser definir estruturas complexas de preços diferentes para produtos diferentes para usuários diferentes?

Isso fica um pouco mais complicado, mas você pode usar os mesmos princípios. No WooCommerce, um produto é uma “postagem” e você pode definir metadados de postagem para ele. Por exemplo, você pode adicionar uma meta de postagem chamada b2b_price, para ter um preço separado para usuários b2b. Aqui está o código.

update_post_meta( $post_id, 'b2b_price', 15 ); // 15 is the price for b2b users

Como você mostra esse preço apenas para usuários 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. Configurando isenções fiscais

Essa é mais fácil do que você pensa! Há uma função muito útil que você pode usar no WooCommerce que fará isso para você e até cuidará da exibição de preços na maioria das situações: set_is_vat_exempt() . Bom nome, certo?

Essa função fará com que os usuários B2B vejam os preços com o sufixo “excluindo impostos”, enquanto os usuários B2C veem os preços dizendo “incluindo impostos”.

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 – Plugin WooCommerce B2B e Atacado

Espero que um pouco do que compartilhei acima seja útil para você. Equipar o WooCommerce com funcionalidades B2B é uma tarefa complexa, e eu não o culparia se você decidisse que comprar um plugin premium é um uso melhor do seu tempo do que escrever o código você mesmo.

Com isso em mente, vou compartilhar algumas palavras sobre B2BKing. Este é um projeto em que eu e minha equipe trabalhamos há algum tempo, com o objetivo de transformar o WooCommerce em uma solução B2B capaz, uma alternativa às caras plataformas SAAS.

Estamos constantemente desenvolvendo e apoiando-o como um projeto de longo prazo e atualmente possui mais de 137 recursos, incluindo registro de empresas, isenções fiscais, regras dinâmicas de preços, suporte ao IVA, sistema de mensagens integrado, vários compradores por conta, ofertas, um modo híbrido B2B&B2C dedicado e muito, muito mais.

Esta semana, estamos orgulhosos de ter sido escolhido a dedo pela Envato como seu “ Plugin em destaque da semana ” e exibido na primeira página do CodeCanyon.

Oferecemos uma demonstração ao vivo que você pode testar a qualquer momento, tanto back-end quanto front-end: Live Demo

Se você tiver alguma dúvida sobre o artigo, sobre o plugin ou apenas quiser dizer oi, não seja tímido! Sinta-se à vontade para entrar em contato com o desenvolvedor de plugins do seu bairro amigável.