• Fábio

    (@fabiopulitta)


    Fala @claudiosanches,

    Dessa vez n?o venho pedir ajuda, mas fazer uma contribui??o a quem interessar.

    O plugin funciona e está cada vez melhor, mas sempre senti necessidade de uma melhoria. Esconder a modalidade de frete quando o Frete Grátis está disponível.

    Encontrei uma fun??o na net que esconde todas as modalidades quando o Frete Grátis está disponível, mas modifiquei um pouco para permitir que as modalidades diferentes permane?am na lista. O código ainda tá cru e atendendo apenas minha necessidade, mas acredito que possa ajudar algumas pessoas. N?o sei se seria o caso de montar um plugin pra isso ou se seria o caso de integrar a ideia ao plugin WooCommerce Correios. Segue abaixo:

    function labelModify($label){
        
    // Retorno apenas a estimativa de entrega e pre?o (sem o nome da modalidade)
        preg_match('/\((.*?)\)/', $label, $match);
        $str = $match[0];
        
        return $str;
    }
    
    function my_hide_shipping_when_free_is_available( $rates ) {
    	
        $frees = array();
        $label_pac = '';
        $label_sed = '';
        
        // Incluindo no array $frees e salvando as labels
    	foreach ( $rates as $rate_id => $rate ) {
    		
            if ( $rate->method_id === 'correios-pac' ) {
                $label_pac = labelModify($rate->label);
                $frees[ $rate_id ] = $rate;
            }
            
            if ( $rate->method_id === 'correios-sedex' ) {
                $label_sed = labelModify($rate->label);
                $frees[ $rate_id ] = $rate;
            }
            
            if ( $rate->method_id === 'free_shipping' ) {
                $frees[ $rate_id ] = $rate;            
    		}
    	}
        
        // Definindo a label para o frete grátis, se disponível
        foreach($frees as $free_id => $free){
            if ( $free->method_id === 'free_shipping' ) {
                $label_gratis = ($label_pac != '') ? $label_pac : $label_sed;
                $free->label = 'Frete Grátis '.$label_gratis;
                
                $exclude_mod = ($label_pac != '') ? 'correios-pac1' : 'correios-sedex2';
                unset( $frees[$exclude_mod] );
    		}
        }
        
    	return ! empty( $frees ) ? $frees : $rates;
        
    }
    add_filter( 'woocommerce_package_rates', 'my_hide_shipping_when_free_is_available', 100 );

    abs

    • This topic was modified 7 years, 2 months ago by Fábio.
  • The topic ‘Esconder modalidade de envio quando Frete Grátis disponível’ is closed to new replies.