FernandoAcosta.Net

Snippets de customização

1 min de leituraAtualizado há 2 semanas

Cole num plugin de snippets ou no functions.php do tema filho.

Sobretaxa de 10% no frete de um vendedor

add_filter( 'woocommerce_package_rates', function ( $rates, $package ) {
	if ( 42 !== (int) ( $package['wcsp_vendor_id'] ?? 0 ) ) {
		return $rates;
	}
	foreach ( $rates as $rate ) {
		$rate->set_cost( $rate->get_cost() * 1.10 );
	}
	return $rates;
}, 100, 2 );

20% de desconto no frete de vendedores marcados

add_filter( 'woocommerce_package_rates', function ( $rates, $package ) {
	$vendor_id = (int) ( $package['wcsp_vendor_id'] ?? 0 );
	if ( ! $vendor_id || 'yes' !== get_user_meta( $vendor_id, '_premium_vendor', true ) ) {
		return $rates;
	}
	foreach ( $rates as $rate ) {
		$rate->set_cost( $rate->get_cost() * 0.80 );
	}
	return $rates;
}, 100, 2 );

Frete grátis em todos os pacotes pelo total do carrinho

Desfaz a regra por pacote: com o carrinho acima de R$ 200, todos os pacotes ganham o frete grátis configurado.

add_filter( 'woocommerce_shipping_free_shipping_is_available', function ( $available ) {
	return ( WC()->cart && WC()->cart->get_subtotal() >= 200 ) ? true : $available;
}, 100 );

Mudou o custo? Os impostos do frete não são recalculados nesses exemplos. Se a loja cobra imposto sobre frete, ajuste set_taxes() também.

Mais filtros em Filtros dos métodos de envio e Estrutura do pacote.

Foi útil?