No competitivo mundo do comércio eletrônico, é essencial surpreender o cliente com ofertas atraentes. Que tal uma estratégia que não apenas aumenta as vendas mas também encanta os compradores? Conheça a oferta “Compre e Ganhe”, uma tática de marketing que é tão simples quanto eficaz.

“Compre e Ganhe” ou “Buy One, Get One” é uma promoção que transforma visitantes em compradores leais. Uma estratégia eficaz para seu e-commerce, no entanto não é uma função nativa do Woocommerce. Mas não se preocupe, criamos um snippet de código que vai te ajudar a implementar esta promoção em seu e-commerce.
Funciona assim
- Quando você adiciona produtos no valor de R$ 150,00 (ou o valor que determinar) ao carrinho, o sistema adiciona automaticamente o produto bonificado ao carrinho;
- Se o usuário remover algum produto, reduzindo o valor mínimo de compra, o sistema excluirá automaticamente o produto bonificado do carrinho.
A seguir, você encontrará o snippet de código para adicionar esta funcionalidade ao seu WooCommerce. Use o Code Snippet para injetar este código em seu functions.php. Em seguida, teste esta alteração em seu ambiente de testes antes de implementá-la em seu site de produção.
add_action( 'woocommerce_cart_calculate_fees', 'add_gift_to_cart', 10, 1 );
function add_gift_to_cart( $cart ) {
if ( ! is_cart() && ! is_checkout() ) {
return;
}
$gift_id = 73; // ID do produto a ser adicionado
$minimum_subtotal = 150; // Valor mínimo para adicionar o presente
$has_gift = false;
$subtotal = 0;
// Verifique cada item do carrinho
foreach ( $cart->get_cart() as $cart_item_key => $cart_item ) {
if ( $cart_item['product_id'] == $gift_id ) {
$has_gift = true;
} else {
$subtotal += $cart_item['line_total'];
}
}
if ( $subtotal > $minimum_subtotal && ! $has_gift ) {
$cart->add_to_cart( $gift_id );
} else if ( $subtotal <= $minimum_subtotal && $has_gift ) {
foreach ( WC()->cart->get_cart() as $cart_item_key => $cart_item ) {
if ( $cart_item['product_id'] == $gift_id ) {
$cart->remove_cart_item( $cart_item_key );
}
}
}
}
add_filter( 'woocommerce_add_cart_item_data', 'restrict_gift_quantity', 10, 2 );
function restrict_gift_quantity( $cart_item_data, $product_id ) {
if ( $product_id == $gift_id ) {
$cart_item_data['unique_key'] = md5( microtime() . rand() );
}
return $cart_item_data;
}
add_filter( 'woocommerce_cart_item_quantity', 'limit_gift_quantity', 10, 3 );
function limit_gift_quantity( $product_quantity, $cart_item_key, $cart_item ) {
if ( $cart_item['product_id'] == $gift_id ) {
return sprintf( '%s <input type="hidden" name="cart[%s][qty]" value="1" />', 1, $cart_item_key );
}
return $product_quantity;
}
Algumas precauções são necessárias:
- Você deve criar o produto brinde com valor promocional ou mesmo zerado;
- O produto deve estar em estoque;
- A visibilidade do produto no catálogo deve ser oculta.
Onde adicionar este código?
Sugiro que você use o Code Snippet para injetar este código em seu functions.php, no entanto, se desejar, pode inserir na parte inferior do arquivo functions.php do tema filho.
Este é um código de referência, antes de mais nada, você deve adaptá-lo para suas regras de negócio. Finalmente, realize criteriosos testes em ambiente apropriado, antes de colocar em seu site de produção.
Este código está funcionando?
Atualizações do WordPress, Plugins e, principalmente, de Temas podem influenciar no funcionamento deste código. Este código foi testado com o Tema Astra. Caso ele tenha deixado de funcionar, você adicionou alguma melhoria conte sua experiência em nossa Seção de Comentários.
Sua loja online ainda não é WooCommerce?
Este código é uma pequena amostra da flexibilidade e controle que você só terá com o WooCommerce. No entanto, você pode aprender a criar negócios online, em um ambiente WordPress e WooCommerce, de forma profissional, estruturada e escalável do absoluto zero, com nossa formação em e-commerce.
O curso atende desde empreendedores que desejam entrar no mercado digital, até profissionais de agencias de criação de sites que desejam adicionar a seu roll de serviços a criação de e-commerces de alta performance.