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)
);
}
}




