¿Cómo querés recibir tu pedido?

Elegí una opción para continuar al pago.

session->set('picca_receive_type', $flow); // Redirigimos al checkout sin querystring wp_safe_redirect( wc_get_checkout_url() ); exit; } } }); // 3) Cambiar el destino del botón "Proceder al pago" del carrito → nuestra página intermedia add_filter('woocommerce_get_checkout_url', function ($url) { if (is_cart()) { $page = get_page_by_path(PICCA_CHOOSE_PAGE_SLUG); if ($page) { return get_permalink($page->ID); } } return $url; }, 9); // 4) Ocultar dirección de envío cuando sea RETIRO add_filter('woocommerce_cart_needs_shipping_address', function ($needs) { if (WC()->session && 'pickup' === WC()->session->get('picca_receive_type')) { return false; } return $needs; }, 20); // 5) Hacer opcionales campos de facturación en RETIRO (dejá nombre, email, teléfono como requeridos) add_filter('woocommerce_checkout_fields', function ($fields) { if (WC()->session && 'pickup' === WC()->session->get('picca_receive_type')) { $optional = ['billing_country','billing_state','billing_city','billing_postcode','billing_address_1','billing_address_2','billing_company']; foreach ($optional as $k) { if (isset($fields['billing'][$k])) { $fields['billing'][$k]['required'] = false; } } } return $fields; }); // 6) Mostrar SOLO métodos coherentes con la elección (clave para que Iconic muestre los slots correctos) add_filter('woocommerce_package_rates', function ($rates) { $choice = WC()->session ? WC()->session->get('picca_receive_type', 'delivery') : 'delivery'; $filtered = []; foreach ($rates as $rate_id => $rate) { // === Ajustá esta detección a tus métodos de "retiro" === $is_pickup = ( $rate->method_id === 'local_pickup' || stripos($rate->label, 'Recoger') !== false || stripos($rate->label, 'Retiro') !== false || stripos($rate->label, 'Sucursal') !== false || stripos($rate->label, 'Recoleta') !== false || stripos($rate->label, 'Villa Urquiza') !== false ); if ( ('pickup' === $choice && $is_pickup) || ('delivery' === $choice && !$is_pickup) ) { $filtered[$rate_id] = $rate; } } return !empty($filtered) ? $filtered : $rates; }, 20, 1); // 7) (Opcional) Resetear la elección si el carrito queda vacío add_action('woocommerce_cart_emptied', function () { if (WC()->session) { WC()->session->__unset('picca_receive_type'); } });