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?
- 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.
- 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.
- 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.