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 parametro do plugin
$array['sCepOrigem'] = $postcode;
}
}
return $array;
}
add_filter( 'woocommerce_correios_shipping_args', 'filter_woocommerce_correios_shipping_args');
Espero que ajude!!!
Abra?os
Vitor