In un articolo precedente ho spiegato come creare un endpoint personalizzato in WooCommerce, qui invece voglio spiegare come modificare gli endpoints esistenti.
Gli endpoints di WooCommerce sono delle pagine di default di WooCommerce che mostrano determinati dati, ogni endpoints ha un menu, un ordinamento ed un permalink.
Gli endpoints è possibile vederli in WooCommerce \ Impostazioni \ Accounts
A fianco di ogni endpoints è possibile modificare il permalink, nell’esempio sopra si può notare che ho modificato il permalink della pagina Orders da orders a ordini.
Gli endpoints vengono mostrati attraverso una shortcode ([woocommerce_my_account]) che di default è presente nella pagina Il mio account .
Bene, ora che sappiano cosa sono gli endpoints possiamo lavorarci via PHP per modificarli, aggiungerli, rimuoverli, cambiargli il titolo, ecc, ecc; per fare ciò ricorriamo a dei filtri di WooCommerce e a delle funzioni PHP personalizzate, vediamo subito un esempio pratico.
Come eliminare un endpoint di WooCommerce
Per eliminare dalla pagina My Account un determinato endpoint useremo il filtro woocommerce_account_menu_items e gli passeremo al suo interno una funzione in PHP
1 2 3 4 5 6 7 8 |
add_filter ( 'woocommerce_account_menu_items', 'remove_endpoints' ); function remove_endpoints( $endpoints ){ unset( $endpoints['customer-logout'] ); // Logout return $endpoints; } |
Questa funzione elimina il menu Logout, infatti se ora andiamo nella pagina mio account noteremo che il menu è scomparso
Come personalizzare o cambiare il titolo della pagina My Account di WooCommerce
Per fare ciò scriveremo anche qui una funzione PHP simile a questa.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
function custom_endpoint_title( $title ) { global $wp_query; $is_endpoint = isset( $wp_query->query_vars['orders'] ); if ( $is_endpoint && ! is_admin() && is_main_query() && in_the_loop() && is_account_page() ) { // Imposto il nuovo titolo $title = __( 'Questo è il nuovo titolo della pagina ordini WooCommerce!', 'woocommerce' ); remove_filter( 'the_title', 'custom_endpoint_title' ); } return $title; } add_filter( 'the_title', 'custom_endpoint_title' ); |
Come modificare l’ordinamento di apparizione degli endpoints nella pagina MyAccount di WooCommerce
In questo caso invece riccordiamo al filtro woocommerce_account_menu_items
1 2 3 4 5 6 7 8 9 10 11 12 13 |
function woo_endpoints_custom_order() { $args = array( 'resi' => __( 'Resi', 'woocommerce' ), 'edit-account' => __( 'Change My Details', 'woocommerce' ), 'dashboard' => __( 'Dashboard', 'woocommerce' ), 'orders' => __( 'Orders', 'woocommerce' ), 'edit-address' => __( 'Addresses', 'woocommerce' ), 'payment-methods' => __( 'Payment Methods', 'woocommerce' ), 'customer-logout' => __( 'Logout', 'woocommerce' ), ); return $args; } add_filter ( 'woocommerce_account_menu_items', 'woo_endpoints_custom_order' ); |
Come modificare il titolo degli endpoint di WooCommerce
Nel caso in cui volessimo cambiare il titolo di un endpoint possiamo utilizzare invece questo codice
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
function woo_my_account_title() { $myorder = array( 'resi' => __( 'Resi', 'woocommerce' ), // un endpoint che abbiamo creato noi 'edit-account' => __( 'Modifica account', 'woocommerce' ), 'dashboard' => __( 'Dashboard', 'woocommerce' ), 'orders' => __( 'I miei ordini', 'woocommerce' ), 'downloads' => __( 'Download Video', 'woocommerce' ), 'edit-address' => __( 'Indirizzi', 'woocommerce' ), 'payment-methods' => __( 'Modalità di pagamento', 'woocommerce' ), 'customer-logout' => __( 'Logout', 'woocommerce' ), ); return $myorder; } add_filter ( 'woocommerce_account_menu_items', 'woo_my_account_title' ); |
Tutto il codice che ho postato in questo articolo va inserito nel file functions.php del template in uso oppure all’interno di un plugin WordPress
Programmatore WordPress Esperto WooCommerce
Sono l’autore di questo blog con tanti trucchi e guide su WordPress e WooCommerce.
i miei endpoints ogni tanto spariscono… mi basta riandare su woocommerce lato admin nella pagina relativa ad aggiornarla e tutto ri-funziona magicamente.. un’idea di cosa possa essere ?
Ciao Tony,
in che senso spariscono ? Front end o back end ? Ci sono sistemi di cache lato WP o server ?