Skip to main content

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.

inserire codice tracking corriere nelle email cliente senza plugin

Implementazione

  1. Copia il codice nel file functions.php del tuo tema child o in con un plugin come code snippets
  2. Inserisci i dati di tracking prima di processare un ordine come “COMPLETATO”
  3. 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)
);
}
}
Leonardo Spada

Web Designer & Consulente SEO Freelance. Mi occupo di Web Design e posizionamento su Google per diverse realtà aziendali e liberi professionisti curando nei minimi particolari il progetto web dalla pianificazione alla realizzazione.