Tracking Spedizione con WooCommerce
Stai cercando una soluzione per aggiungere il tracking delle spedizioni al tuo negozio WooCommerce e non vuoi utilizzare plugin? Sei nel posto giusto! Vediamo come implementare questa funzionalità essenziale senza plugin aggiuntivi.
L’istruzione in PHP aggiunge 3 campi personalizzati nel backend di gestione ordini, nello specifico: Nome del corriere, Codice di tracciamento, URL per monitorare la spedizione.
Implementazione
- Copia il codice nel file functions.php del tuo tema child o in con un plugin come code snippets
- Inserisci i dati di tracking prima di processare un ordine come “COMPLETATO”
- I clienti riceveranno le informazioni nella loro email di conferma.
// Creare campi per il tracking spedizione su woocommerce senza plugin add_action('woocommerce_admin_order_data_after_shipping_address', 'aggiungi_campi_custom_ordini', 10, 1); function aggiungi_campi_custom_ordini($ordine) { $corriere = get_post_meta($ordine->get_id(), '_corriere_spedizione', true); $tracking = get_post_meta($ordine->get_id(), '_tracking_spedizione', true); $tracking_url = get_post_meta($ordine->get_id(), '_tracking_url', true); ?> <p><strong><?php _e('Corriere:', 'woocommerce'); ?></strong> <input type="text" name="corriere_spedizione" value="<?php echo esc_attr($corriere); ?>" /> </p> <p><strong><?php _e('Codice Tracking:', 'woocommerce'); ?></strong> <input type="text" name="tracking_spedizione" value="<?php echo esc_attr($tracking); ?>" /> </p> <p><strong><?php _e('URL Tracking:', 'woocommerce'); ?></strong> <input type="text" name="tracking_url" value="<?php echo esc_attr($tracking_url); ?>" /> </p> <?php } add_action('woocommerce_process_shop_order_meta', 'salva_campi_custom_ordini', 10, 1); function salva_campi_custom_ordini($ordine_id) { if (isset($_POST['corriere_spedizione'])) { update_post_meta($ordine_id, '_corriere_spedizione', sanitize_text_field($_POST['corriere_spedizione'])); } if (isset($_POST['tracking_spedizione'])) { update_post_meta($ordine_id, '_tracking_spedizione', sanitize_text_field($_POST['tracking_spedizione'])); } if (isset($_POST['tracking_url'])) { update_post_meta($ordine_id, '_tracking_url', esc_url($_POST['tracking_url'])); } } add_action('woocommerce_email_before_order_table', 'aggiungi_tracking_prima_tabella', 10, 4); function aggiungi_tracking_prima_tabella($ordine, $sent_to_admin, $plain_text, $email) { if ($email->id !== 'customer_completed_order') { return; } $corriere = get_post_meta($ordine->get_id(), '_corriere_spedizione', true); $tracking = get_post_meta($ordine->get_id(), '_tracking_spedizione', true); $tracking_url = get_post_meta($ordine->get_id(), '_tracking_url', true); if (!empty($corriere) && !empty($tracking) && !empty($tracking_url)) { echo sprintf( '<p>La spedizione è stata presa in carico dal corriere <strong>%s</strong>.</p> <p>Per verificare lo stato della spedizione, visita questa pagina: <a href="%s">%s</a> e inserisci il seguente codice di tracciamento: <strong>%s</strong>.</p>', esc_html($corriere), esc_url($tracking_url), esc_url($tracking_url), esc_html($tracking) ); } }