Come modificare i template WooCommerce

In questo tutorial vedremo come personalizzare i template di WooCommerce senza la creazione di un tema child, argomento già visto in passato grazie a questo precedente articolo.
Recentemente ho avuto la necessità di fare delle modifiche nella sezione Ordini presente nella sezione Il mio account per aggiungere un campo di ricerca.
Purtroppo non è stato possibile tramite un tema child a causa delle configurazioni del tema principale che venivano perse dopo l’attivazione di questo tema.
Fortunatamente esiste un filtro per WooCommerce che permette di sovrascrivere ogni file template con uno presente nella cartella di un plugin sviluppato appositamente per questa modifica, permettendomi così di modificare la pagina degli ordini e di tutti gli eventuali altri template da personalizzare.
Si tratta di un corso completo per lo sviluppo di temi e plugin per WordPress, seguendo tutti gli standard di codifica di WordPress.org.Acquista il corso o scarica gratuitamente un estratto
Personalizzare i template WooCommerce tramite il filtro wc_get_template
Il filtro WooCommerce in questione è wc_get_template
Ecco un esempio per sovrascrivere il template orders.php di WooCommerce
function wip_get_template( $located, $template_name ) { if ( 'myaccount/orders.php' === $template_name ) { $located = plugin_dir_path( __FILE__ ) . 'templates/orders.php'; } return $located; } add_filter('wc_get_template', 'wip_get_template', 10, 2 );
Quello che avviene è un confronto del template in uso nella sezione corrente che il visitatore sta visualizzando, se corrisponde al template da sovrascrivere viene assegnato il percorso del file aggiunto nella cartella del tema alla variabile $located, altrimenti verranno utilizzati quelli di default di WooCommerce oppure quelli del tema, se presenti.
Se hai bisogno di maggiori informazioni riguardo la creazione da zero di un nuovo plugin per WordPress, puoi consultare questo articolo che ho pubblicato in passato.
Dopo aver creato il file contenente l’intestazione del plugin, crea una cartella templates e copia al suo interno ogni file template di WooCommerce che desideri personalizzare presenti nella cartella /wp-content/plugins/woocommerce/templates/
La variabile $template_name va confrontata direttamente con il percorso del file PHP copiato in precedenza
Per sovrascrivere il file orders.php ho dovuto confrontare questa variabile con myaccount/orders.php, che corrisponde a /wp-content/plugins/woocommerce/templates/myaccount/orders.php
A questo punto dovrai solamente attivare il plugin e verificare che la modifica funzioni correttamente.