Czasem potrzebujemy szybko wygenerować przejrzystą listę produktów – na przykład jako ofertę dla klienta, dokument do zatwierdzenia przez dział zakupów, czy wewnętrzny raport. Kod który przygotowałem umożliwia użytkownikom sklepu WooCommerce eksport zawartości koszyka do pliku Word. Taka funkcja jest szczególnie przydatna w sklepach B2B, przy przygotowywaniu ofert indywidualnych, a także w sytuacjach, gdy trzeba przedstawić zawartość koszyka do dalszej analizy. W artykule przedstawimy, jak to działa i dlaczego warto wdrożyć takie rozwiązanie.

Eksport koszyka WooCommerce do pliku Word – idealne narzędzie do ofert i raportów

To wygodna funkcja eksportu zawartości koszyka do pliku Word może być świetnym dodatkiem. Przedstawiony kod realizuje właśnie to zadanie – pozwala użytkownikowi na pobranie szczegółowego raportu z koszyka w formacie Word. Przyjrzyjmy się, jak to działa, kiedy się przydaje i co daje.

 

add_action('init', function() {
    // Sprawdź, czy użytkownik kliknął przycisk pobrania
    if (isset($_GET['download_cart_word']) && $_GET['download_cart_word'] === 'true') {
        $cart = WC()->cart;

        // Jeśli koszyk jest pusty
        if ($cart->is_empty()) {
            wp_die('Koszyk jest pusty. Nie można wygenerować pliku.');
        }

        // Ustaw nagłówki dla pliku Word
        header('Content-Type: application/msword');
        header('Content-Disposition: attachment; filename="koszyk.doc"');
        header('Cache-Control: max-age=0');

        // Początek dokumentu HTML rozpoznawanego przez Worda
        echo '<html>';
        echo '<head>';
        echo '<meta charset="UTF-8">';
        echo '<title>Koszyk</title>';
        echo '<style>
                table {
                    width: 100%;
                    border-collapse: collapse;
                }
                th, td {
                    border: 1px solid #ccc;
                    padding: 8px;
                    text-align: left;
                }
                th {
                    background-color: #f4f4f4;
                }
                td.short-description {
                    width: 300px;
                    word-wrap: break-word;
                }
              </style>';
        echo '</head>';
        echo '<body>';
        echo '<table>';
        echo '<tr>
                <th style="width: 200px;">Nazwa</th>
                <th class="short-description">Krótki opis</th>
                <th style="width: 100px;">Ilość</th>
                <th style="width: 100px;">Cena za wszystkie sztuki</th>
              </tr>';

        // Iteruj przez produkty w koszyku
        foreach ($cart->get_cart() as $cart_item) {
            $product = $cart_item['data']; // Obiekt produktu
            $name = wp_strip_all_tags($product->get_name());
            $short_description = wp_strip_all_tags($product->get_short_description());
            $quantity = $cart_item['quantity'];
            $line_total = number_format($cart_item['line_total'], 2, ',', '');

            // Dodaj wiersz do tabeli
            echo "<tr>
                    <td>{$name}</td>
                    <td class='short-description'>{$short_description}</td>
                    <td>{$quantity}</td>
                    <td>{$line_total} zł</td>
                  </tr>";
        }

        echo '</table>';
        echo '</body>';
        echo '</html>';

        exit;
    }
});

// Shortcode do generowania przycisku pobrania
add_shortcode('cart_download_word_button', function() {
    // Sprawdź, czy koszyk jest pusty
    if (WC()->cart->is_empty()) {
        return '<p>Twój koszyk jest pusty.</p>';
    }

    // Generuj przycisk do pobrania pliku Word
    $download_url = add_query_arg('download_cart_word', 'true', home_url());
    return '<a href="' . esc_url($download_url) . '" style="display: inline-block; padding: 10px 15px; background-color: #0073aa; color: #fff; text-decoration: none; border-radius: 5px;">Pobierz koszyk</a>';
});

Jak działa kod?

  1. Sprawdzenie żądania: Kod działa na akcję init, sprawdzając, czy w adresie URL znajduje się parametr download_cart_word z wartością true. Jeśli tak, uruchamia proces generowania pliku Word.
  2. Obsługa pustego koszyka: Jeśli koszyk jest pusty, użytkownik zobaczy komunikat o błędzie, a proces zostaje przerwany.
  3. Generowanie dokumentu Word:
    • Nagłówki HTTP są ustawiane tak, aby przeglądarka rozpoznała plik jako dokument Word.
    • Zawartość koszyka jest formatowana jako tabela HTML, która jest czytelna po otwarciu w Wordzie.
    • Tabela zawiera kolumny: nazwa produktu, krótki opis, ilość oraz cena za wszystkie sztuki.
    • Styl CSS wbudowany w dokument poprawia estetykę wyświetlanych danych.
  4. Shortcode do generowania przycisku: Dodano także funkcję shortcodu [cart_download_word_button], która generuje przycisk „Pobierz koszyk”. Przycisk jest widoczny tylko wtedy, gdy koszyk nie jest pusty.

Kiedy się przydaje?

  • Firmy B2B: Klienci biznesowi mogą potrzebować dokumentu z listą produktów do dalszego przesłania lub analizy.
  • Usprawnienie procesu zakupowego: Klienci mogą zapisywać swoje koszyki jako dokumenty do weryfikacji przed finalizacją zamówienia.
  • Propozycje ofertowe: Funkcja może być wykorzystywana w sklepach, które wymagają akceptacji koszyka przez różne osoby przed zakupem.

Co daje takie rozwiązanie?

  • Prostota i wygoda: Klienci mają łatwy sposób na zapisanie szczegółów zakupów w edytowalnym formacie.
  • Profesjonalny wygląd: Tabela z produktami wygląda schludnie, dzięki wbudowanemu stylowi.
  • Elastyczność: Generowanie raportu w formacie Word pozwala na łatwą edycję, drukowanie i przesyłanie.

Jak użyć tego kodu?

  1. Dodaj kod do pliku functions.php w swoim motywie WordPress lub jako fragment kodu za pomocą wtyczki.
  2. Umieść shortcode [cart_download_word_button] w dowolnym miejscu swojej strony, np. na stronie koszyka.

Ten prosty dodatek może znacznie poprawić doświadczenie użytkownika, zwłaszcza w sklepach, które obsługują bardziej zaawansowane potrzeby klientów.