/** * AW: Cart -> Inquiry (bez checkouta) - FIX za "vrti se" * - NE prepisuje checkout URL (da ne radi loop) * - ukloni sve "Proceed to checkout" gumbe * - doda formu za "Zatraži ponudu" na cart * - /checkout preusmjeri na /cart */ // 1) Blokiraj pristup checkoutu add_action('template_redirect', function () { if (function_exists('is_checkout') && is_checkout() && ! is_order_received_page()) { wp_safe_redirect(wc_get_cart_url()); exit; } }, 1); // 2) Makni SVE što se ispisuje na "woocommerce_proceed_to_checkout" (Flatsome često ubacuje svoje) add_action('wp_loaded', function () { if ( did_action('wp_loaded') ) { /* no-op */ } if ( function_exists('remove_all_actions') ) { remove_all_actions('woocommerce_proceed_to_checkout'); } }, 20); // 3) Dodaj formu + gumb na cart (hook koji Flatsome gotovo sigurno prikazuje) add_action('woocommerce_after_cart', function () { if ( ! function_exists('WC') || ! WC()->cart || WC()->cart->is_empty() ) return; $nonce = wp_create_nonce('aw_inquiry_cart'); echo '
'; echo '

Zatraži ponudu

'; echo '
'; echo ''; echo ''; echo '

'; echo '

'; echo '

'; echo '

'; echo ''; echo '
'; echo '
'; }, 20); // 4) Handler: pošalji mail sa stavkama košarice add_action('admin_post_nopriv_aw_cart_inquiry_submit', 'aw_cart_inquiry_submit'); add_action('admin_post_aw_cart_inquiry_submit', 'aw_cart_inquiry_submit'); function aw_cart_inquiry_submit() { if ( ! isset($_POST['_wpnonce']) || ! wp_verify_nonce($_POST['_wpnonce'], 'aw_inquiry_cart') ) { wp_die('Neispravan zahtjev (nonce).'); } if ( ! function_exists('WC') || ! WC()->cart || WC()->cart->is_empty() ) { wp_safe_redirect(wc_get_cart_url()); exit; } $name = sanitize_text_field($_POST['aw_name'] ?? ''); $email = sanitize_email($_POST['aw_email'] ?? ''); $phone = sanitize_text_field($_POST['aw_phone'] ?? ''); $message = sanitize_textarea_field($_POST['aw_message'] ?? ''); if ( ! $name || ! is_email($email) ) { wp_safe_redirect( add_query_arg('inquiry', 'invalid', wc_get_cart_url()) ); exit; } $to = get_option('admin_email'); $subject = 'Upit s weba (košarica) – ' . wp_specialchars_decode(get_bloginfo('name'), ENT_QUOTES); $lines = []; $lines[] = "PODACI KUPCA"; $lines[] = "Ime: {$name}"; $lines[] = "Email: {$email}"; if ($phone) $lines[] = "Telefon: {$phone}"; $lines[] = ""; if ($message) { $lines[] = "PORUKA"; $lines[] = $message; $lines[] = ""; } $lines[] = "ARTIKLI U KOŠARICI"; $lines[] = str_repeat('-', 40); foreach ( WC()->cart->get_cart() as $cart_item ) { $product = $cart_item['data'] ?? null; if ( ! $product || ! is_a($product, 'WC_Product') ) continue; $qty = (int) ($cart_item['quantity'] ?? 1); $sku = (string) $product->get_sku(); $pname = (string) $product->get_name(); $url = get_permalink($product->get_id()); $lines[] = $pname . ($sku ? " (SKU: {$sku})" : ""); $lines[] = "Količina: {$qty}"; $lines[] = "Link: {$url}"; $lines[] = ""; } $body = implode("\n", $lines); $headers = [ 'Content-Type: text/plain; charset=UTF-8', 'Reply-To: ' . $name . ' <' . $email . '>', ]; $sent = wp_mail($to, $subject, $body, $headers); if ($sent) { WC()->cart->empty_cart(); // makni ovu liniju ako želiš da košarica ostane wp_safe_redirect( add_query_arg('inquiry', 'sent', wc_get_cart_url()) ); exit; } wp_safe_redirect( add_query_arg('inquiry', 'fail', wc_get_cart_url()) ); exit; } // 5) Poruke na košarici add_action('woocommerce_before_cart', function () { if ( empty($_GET['inquiry']) ) return; $v = sanitize_text_field($_GET['inquiry']); if ($v === 'sent') wc_print_notice('Upit je poslan. Javimo se uskoro.', 'success'); if ($v === 'fail') wc_print_notice('Upit nije poslan. Pokušajte ponovno.', 'error'); if ($v === 'invalid') wc_print_notice('Provjerite ime i email pa pokušajte ponovno.', 'error'); }, 5);