/**
* 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 '
';
}, 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);