Cum să Adaugi Opțiunea de Printare a Comenzilor Direct din WooCommerce

YouTube Logo Urmărește canalul nostru de YouTube

Dacă vrei să adaugi un buton pentru a printa o comandă din pagina de administrare a comenzilor din WooCommerce, poți folosi următorul cod. Acesta adaugă un metabox pe pagina de editare a comenzii în WooCommerce, care va afișa un buton pentru a printa comanda într-un format personalizat.

Codul complet pentru a adăuga butonul de printare a comenzii:

<?php

add_action('add_meta_boxes', 'add_print_order_metabox');

function add_print_order_metabox() {
    add_meta_box(
        'print_order_metabox', 
        'Printează Comanda',  
        'render_print_order_metabox', 
        'shop_order', 
        'side', 
        'default'
    );
}

function render_print_order_metabox($post) {
    $order_id = $post->ID;
    $print_url = admin_url('admin-ajax.php?action=print_order&order_id=' . $order_id);

    echo '<a href="' . esc_url($print_url) . '" target="_blank" class="button button-primary">Printează Comanda</a>';
}

add_action('wp_ajax_print_order', 'generate_printable_order');

function generate_printable_order() {
    if (!current_user_can('manage_woocommerce')) {
        wp_die('Nu ai permisiunea de a accesa această pagină.');
    }

    if (!isset($_GET['order_id'])) {
        wp_die('ID-ul comenzii lipsește.');
    }

    $order_id = intval($_GET['order_id']);
    $order = wc_get_order($order_id);

    if (!$order) {
        wp_die('Comanda nu a fost găsită.');
    }

    // Generăm conținutul paginii de printare
    echo '<html><head>';
    echo '<title>Nota de Comandă #' . $order->get_order_number() . '</title>';
    echo '<style>
        @media print {
            .no-print { display: none; }
        }
        body {
            font-family: Arial, sans-serif;
            margin: 20px;
            padding: 0;
            background: #f8f8f8;
        }
        .container {
            max-width: 800px;
            margin: auto;
            background: #fff;
            padding: 20px;
            border: 1px solid #ddd;
            border-radius: 5px;
        }
        h1, h2, h3 {
            margin: 0 0 10px;
        }
        h1 {
            text-align: center;
            color: #0073aa;
        }
        .status {
            text-align: center;
            margin: 10px 0 20px;
            padding: 10px;
            font-size: 16px;
            font-weight: bold;
            border-radius: 5px;
            color: #fff;
            background: #28a745;
        }
        table {
            width: 100%;
            border-collapse: collapse;
            margin-top: 20px;
        }
        table, th, td {
            border: 1px solid #ddd;
        }
        th, td {
            padding: 10px;
            text-align: left;
        }
        th {
            background: #0073aa;
            color: #fff;
        }
        .footer {
            text-align: center;
            margin-top: 20px;
            font-size: 12px;
            color: #888;
        }
    </style>';
    echo '</head><body>';
    echo '<div class="container">';

    echo '<h1>Nota de Comandă</h1>';
    echo '<div class="status">Avizată de Depozit</div>'; // Adăugăm un statut vizibil
    echo '<h2>Comandă #' . $order->get_order_number() . '</h2>';
    echo '<p><strong>Data:</strong> ' . date_i18n('j F Y', strtotime($order->get_date_created())) . '</p>';
    echo '<p><strong>Client:</strong> ' . $order->get_billing_first_name() . ' ' . $order->get_billing_last_name() . '</p>';
    echo '<p><strong>Email:</strong> ' . $order->get_billing_email() . '</p>';
    echo '<p><strong>Telefon:</strong> ' . $order->get_billing_phone() . '</p>';
    echo '<p><strong>Adresă:</strong> ' . $order->get_billing_address_1() . ', ' . $order->get_billing_city() . '</p>';

    echo '<h3>Produse comandate</h3>';
    echo '<table>';
    echo '<tr><th>Produs</th><th>Cantitate</th></tr>';

    foreach ($order->get_items() as $item_id => $item) {
        echo '<tr>';
        echo '<td>' . esc_html($item->get_name()) . '</td>'; 
        echo '<td>' . $item->get_quantity() . '</td>'; 
        echo '</tr>';
    }

    echo '</table>';
    echo '<p><strong>Total comandă:</strong> ' . number_format($order->get_total(), 2) . ' RON</p>';

    echo '<div class="footer">';
    echo '<p>Vă mulțumim pentru comandă!</p>';
    echo '<img src="https://tutorialewebsite.ro/wp-content/uploads/2025/01/Logo-tutoriale-website-Made-with-PosterMyWall-e1736538659501.png" style="max-width: 150px; display: block; margin: 0 auto 10px;">'; // Adăugăm logo-ul
    echo '</div>';

    echo '</div>';
    echo '<div class="no-print" style="margin-top: 20px; text-align: center;">
            <button onclick="window.print()" style="
                padding: 10px 20px; 
                background: #0073aa; 
                color: #fff; 
                border: none; 
                border-radius: 5px; 
                cursor: pointer;
            ">Printează această comandă</button>
          </div>';
    echo '</body></html>';

    exit;
}

Cum funcționează acest cod?

  1. Adăugarea unui metabox pentru printarea comenzii:
    • Codul adaugă un metabox pe pagina de administrare a comenzilor, care include un buton pentru „Printează Comanda”. Acest buton va deschide o pagină de printare a comenzii într-un format personalizat.
  2. Generarea unui document de printat:
    • Când apăsați butonul pentru a printa comanda, va fi generat un document HTML cu informațiile comenzii, inclusiv produsele comandate, totalul și detalii ale clientului.
    • Documentul va fi stilizat pentru a fi ușor de citit și de printat, inclusiv adăugarea unui logo personalizat la finalul paginii.
  3. Secțiunea de printare:
    • Documentul generat va include un buton de „Printează această comandă” care va permite utilizatorului să imprime comanda.

Unde se adaugă acest cod?

  • Adăugarea în tema activă: Poți pune acest cod în fișierul functions.php al temei tale active sau într-un plugin personalizat.

Concluzie

Acest cod oferă o metodă simplă de a adăuga o opțiune de printare direct în pagina de administrare a comenzilor din WooCommerce. Cu acest buton, poți imprima rapid o comandă, inclusiv detalii despre client și produse, într-un format personalizat ușor de utilizat.

× YouTube Logo

🔔 Abonează-te la canalul nostru!

Primește cele mai noi tutoriale WordPress direct pe YouTube!

×