Como criar uma validação de valor mínimo por fornecedor na sua loja com WordPress e WooCommerce. Siga os passos abaixo e não esqueça de deixar um comentário para agregar nessa solução.
Crie o atritubo marca em Produtos > Atributos, com a Slug ‘brands’ que conterá as marcas, conforme exemplo abaixo:
A descrição precisa conter o valor mínimo do pedido para o fabricante. O texto não é importante, será ignorado no script de análise do valor mínimo.
Agora você precisa personalizar o script do tema, conforme o conteúdo abaixo. Para isso clique em Aparência > Editor de Temas > functions.php e adicione as seguintes linhas:
<?php
/**
* Set a minimum order amount for checkout
*/
add_action( 'woocommerce_checkout_process', 'wc_minimum_order_amount' );
add_action( 'woocommerce_before_cart' , 'wc_minimum_order_amount' );
function wc_minimum_order_amount() {
$cart = WC()->cart->get_cart();
foreach ( $cart as $cart_item_key => $cart_item ) {
// Lista itens do carrinho
$item_data = $cart_item['data'];
// Identifica as variaveis
$att = array_shift(wc_get_product_terms($item_data->get_id(), 'pa_brands'));
// Busca o valor que está gravado na descrição do atributo
$res = preg_replace('/[^0-9]/', '', $att->description);
$minimum_selling = $res/100;
// Identifica o nome do fabricante
$brand_name = $att->name; // $item_data->get_attribute('pa_brands');
$item_total = $cart_item['line_total'];
// Agrupar total de produtos por fabricante
$total_itens_fabricante[$brand_name] += $item_total;
$pedido_minimo_fabricante[$brand_name] = $minimum_selling;
}
// Verificar se o total da compra por item esta abaixo do exigido pelo fabricante
foreach ( $total_itens_fabricante as $fabricante => $valor_total ) {
foreach ( $pedido_minimo_fabricante as $nome_fabricante => $valor_pedido_minimo ) {
if ($nome_fabricante == $fabricante) {
if ($valor_total < $valor_pedido_minimo) {
$message_minimum_selling = 'O valor do pedido para o fabricante %s precisa ser acima de %s.';
if ( is_cart() || is_checkout() ) {
wc_print_notice(
sprintf ( $message_minimum_selling,
($nome_fabricante),
wc_price( $valor_pedido_minimo )
), 'error'
);
}
}
}
}
}
// Define um valor mínimo para pedidos na loja
$minimum = 3000;
$message = 'O valor total do seu pedido é de %s — Para finalizar o pedido, é necessrio atingir o valor mínimo de %s.';
if ( WC()->cart->total < $minimum ) {
if ( is_cart() || is_checkout() ) {
wc_print_notice(
sprintf ( $message,
wc_price( WC()->cart->total ),
wc_price( $minimum )
), 'error'
);
}
}
}
Clique em ‘Atualizar arquivo’, para salvar as alterações.
Você precisa fazer o login para publicar um comentário.