fbpx

Formularz opinii produktu – co to takiego?

Formularz opinii produktu to funkcjonalność umożliwiająca klientom dzielenie się opiniami po zakupie. Dzięki temu użytkownicy mogą przekazywać swoje doświadczenia i pomagać innym w podjęciu decyzji zakupowej. Formularz wyświetla się tylko tym klientom, którzy są zalogowani i kupili dany produkt. Takie rozwiązanie zwiększa wiarygodność każdej recenzji.

W WooCommerce formularz z opiniami można stworzyć za pomocą shortcode’u, który działa tylko na stronie produktu. Użytkownik musi być zalogowany, aby zobaczyć formularz. Jeśli nie jest, zobaczy komunikat zachęcający do logowania. To dobre zabezpieczenie przed spamem i nieautoryzowanymi opiniami.

Kto może wypełnić formularz opinii?

Formularz opinii produktu dostępny jest tylko dla klientów, którzy faktycznie kupili dany produkt. WooCommerce sprawdza historię zakupów danego użytkownika. Jeśli klient nie kupił danego produktu, nie może zostawić opinii. Takie rozwiązanie chroni przed fałszywymi recenzjami.

Gdy użytkownik spełnia wymagania, może dodać ocenę od 1 do 5 i napisać swoją opinię. Po wysłaniu formularza użytkownik zostaje przekierowany z komunikatem potwierdzającym, że opinia czeka na zatwierdzenie przez administratora. To prosty i przejrzysty proces.

Dlaczego warto korzystać z formularza opinii produktu?

Formularz opinii produktu zwiększa zaangażowanie klientów i buduje społeczność wokół sklepu. Opinie są nie tylko źródłem wiedzy, ale także czynnikiem wpływającym na sprzedaż. Im więcej opinii, tym większa szansa, że inni klienci zdecydują się na zakup.

Ponadto, formularz poprawia SEO strony. Google ceni treści generowane przez użytkowników, szczególnie jeśli są unikalne i zawierają słowa kluczowe. Formularz pomaga w tym procesie, zwiększając widoczność produktów w wyszukiwarkach.

Wreszcie – użytkownicy czują się docenieni, gdy mogą podzielić się swoją opinią. To wpływa na pozytywny wizerunek marki i lojalność klientów. Dlatego wdrożenie funkcji, jaką jest formularz to inwestycja w rozwój sklepu.

function formularz_opinii_shortcode() {
    if ( ! is_user_logged_in() ) {
        $login_url = 'tutaj adres strony do przekierowania na MOJE KONTO';
        return '
        <div class="musiszbyczalogowany">
            <p class="zalogowanymusiszbyc">Musisz być zalogowany, aby wystawić opinię.</p>
            <p class="guziklogowania"><a href="' . esc_url( $login_url ) . '" class="buttonlogowania">Zaloguj się</a></p>
            </div>
        ';
    }

    if ( ! is_product() ) {
        return '<p>Formularz działa tylko na stronie produktu.</p>';
    }

    if ( is_product() ) {
    $product_id = get_the_ID();
} else {
    return '<p>Formularz działa tylko na stronie produktu.</p>';
}
    $user_id = get_current_user_id();
   

    if ( ! wc_customer_bought_product( '', $user_id, $product_id ) ) {
        return '<p>Ten produkt nie został przez Ciebie zakupiony.</p>';
    }

    // 🔎 Sprawdź, czy użytkownik już dodał opinię
    $args = array(
        'post_id' => $product_id,
        'user_id' => $user_id,
        'count' => true,
        'type' => 'review',
    );
    $has_reviewed = get_comments( $args );

    // Obsługa formularza
    if ( isset($_POST['moj_rating'], $_POST['moj_opis'], $_POST['moj_opinia_wyslana']) && !$has_reviewed ) {
        $rating = intval($_POST['moj_rating']);
        $comment_content = sanitize_text_field($_POST['moj_opis']);

        $comment_data = array(
            'comment_post_ID' => $product_id,
            'comment_content' => $comment_content,
            'comment_author' => wp_get_current_user()->display_name,
            'comment_author_email' => wp_get_current_user()->user_email,
            'comment_type' => 'review',
            'comment_approved' => 0,
            'user_id' => $user_id,
        );

        $comment_id = wp_insert_comment($comment_data);

        if ($comment_id) {
            update_comment_meta($comment_id, 'rating', $rating);
            wp_safe_redirect( add_query_arg( 'opinia', 'ok', get_permalink() ) );
            exit;
        } else {
            echo '<p>Wystąpił błąd podczas zapisywania opinii.</p>';
        }
    }

    ob_start();

    // ✔️ Komunikat po dodaniu opinii (z alertem)
    if ( isset($_GET['opinia']) && $_GET['opinia'] === 'ok' ) {
        echo '
        <script>
            alert("Dziękujemy! Twoja opinia czeka na zatwierdzenie przez administratora strony.");
            if (window.history.replaceState) {
                const url = new URL(window.location.href);
                url.searchParams.delete("opinia");
                window.history.replaceState({}, document.title, url.toString());
            }
        </script>';
    }

    // ✅ Jeśli użytkownik już dodał opinię, ukrywamy formularz
    if ( $has_reviewed ) {
        echo '<div class="infopart2"><p class="infoinfo"><strong>Do tego produktu wystawiłeś już opinię.</strong></p></div>';
    } else {
        ?>

        <form method="post">
            
                <div class="opinia-konsultacja">
                <label class="ocena-konsultacji" for="moj_rating">Jak oceniasz konsultację? (W skali od 1 do 5)</label>
                <select name="moj_rating" id="moj_rating" required>
                    <option value="">Wybierz ocenę</option>
                    <option value="5">5 - Świetny</option>
                    <option value="4">4 - Dobry</option>
                    <option value="3">3 - Średni</option>
                    <option value="2">2 - Słaby</option>
                    <option value="1">1 - Bardzo słaby</option>
                </select>
            </div>
            
           <div class="pole-opinii">
                <label class="ocena-konsultacji" for="moj_opis">Treść opinii:</label>
                <textarea name="moj_opis" id="moj_opis" rows="5" required></textarea>
            </div>
            <div class="guzik-opinii">
                <input class="guzikopinii" type="submit" name="moj_opinia_wyslana" value="Wystaw swoją opinię">
            </div>
        </form>

        <?php
    }

    return ob_get_clean();
}
add_shortcode('formularz_opinii', 'formularz_opinii_shortcode');

Zostaw komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *

Imię:


Nazwisko:


Adres email:


Nazwa Twojej firmy:


NIP Twojej firmy

REGON Twojej firmy



Adres Twojej firmy

Ulica

Kod pocztowy

Miasto

Wybierz bramkę płatniczą na Twojej stronie