Forum Replies Created

Viewing 2 replies - 1 through 2 (of 2 total)
  • Thread Starter vmotta

    (@vmotta)

    Claudio, muito obrigado, funcionou certinho, vou deixar aqui a solução para quem quiser utilizar ok?

    Estou utilizando o WordPress, Woocommerce, WC Marketplace e o Woocommerce Correios.
    O desafio é um usuário cadastrado vender um produto e o frete ser calculado com base no cep desse usuário como origem.

    Primeiro, como temos vários vendedores, não deixo inserir mais que um produto no carrinho, pois poderia inserir produtos de vendedores diferentes, para isso inclui no arquivo functions.php do tema:

    function woo_custom_add_to_cart( $cart_item_data ) {
        global $woocommerce;
        $woocommerce->cart->empty_cart();
        return $cart_item_data;
    }
    add_filter( 'woocommerce_add_cart_item_data', 'woo_custom_add_to_cart' );

    Agora é necessário interceptar o cep de origem para o cálculo correto, no arquivo class-wc-correios-connect.php inseri o seguinte código:

    function filter_woocommerce_correios_shipping_args( $array ) { 
    
    	// ao acessar a página do produto aqui recebe seu id
    	$productId = $_GET['product_id'];
    
    	// se não recebeu, tenta pegar o id do produto do primeiro item do carrinho (trabalhamos apenas com 1 item no carrinho)
    	if (empty($productId)) {
    
    		global $woocommerce;
    
    		$itemsCart = $woocommerce->cart->get_cart();
    
            foreach($itemsCart as $item => $values) {
                $_product = $values['data']->post;
                $productId = $_product->ID;
                break;
            }
        }
    
    	if (!empty($productId)) {
    
    		// obtém o produto a partir do id
    		$product = wc_get_product( $productId );
    
    		//verifica se existe um atributo cep no produto para utilizar como cep de origem
    		//permite forçar um cep para um produto específico
    		$postcode = $product->get_attribute('cep');
    
    		if ( empty($postcode) ) {
    			// se não encontrou no produto um cep, obtém o cep do vendedor desse produto
    			$vendor = new WCMp_Vendor( $product->post->post_author );
    			$postcode = $vendor->postcode;
    		}
    
    		if (!empty($postcode)) {
    			// se encontrou um cep utiliza, se não encontrar utiliza o parâmetro do plugin
    			$array['sCepOrigem'] = $postcode;
    		}
    
    	}
    
        return $array;
    }
    add_filter( 'woocommerce_correios_shipping_args', 'filter_woocommerce_correios_shipping_args');

    Espero que ajude!!!
    Abraços
    Vitor

    Thread Starter vmotta

    (@vmotta)

    Hello!!

    It is this version that I’m using. I downloaded right now to check the file.

    I think I expressed myself wrong, the file is not empty, only translations such as these:

    #: ../templates/wcmp-vendor-review-form.php:41
    msgid “Perfect”
    msgstr “”

    #: ../templates/wcmp-vendor-review-form.php:42
    msgid “Good”
    msgstr “”

    #: ../templates/wcmp-vendor-review-form.php:43
    msgid “Average”
    msgstr “”

    Thank you very much!!
    Vitor

Viewing 2 replies - 1 through 2 (of 2 total)