Come modificare il menu di navigazione della pagina "Il mio account" in WooCommerce

26 lug 2017, 09:39:08
Visualizzazioni: 77.1K
Voti: 13

Voglio modificare il menu di navigazione laterale di "Il mio account" di WooCommerce.

Per questo, ho fatto modifiche nel file woocommerce/templates/myaccount/navigation.php. I problemi con questo approccio sono:

  • Posso aggiungere i nuovi elementi solo in prima o ultima posizione nel menu. Invece avrei bisogno di metterli in seconda e terza posizione...
  • Se WC viene aggiornato, potrebbe cambiare...

Qual è il modo migliore per personalizzare il menu di navigazione "Il mio account" di WooCommerce secondo le mie esigenze?

screenshot del menu di navigazione Il mio account di WooCommerce

1
Commenti

La risposta più dettagliata qui: https://github.com/woocommerce/woocommerce/wiki/Customising-account-page-tabs

Zhi V Zhi V
28 mag 2018 17:04:21
Tutte le risposte alla domanda 2
2
28

Per fare ciò, non è necessario modificare il file woocommerce/templates/myaccount/navigation.php.

Il modo migliore per personalizzare le voci del menu di navigazione "Il mio account" è utilizzare:

In questo modo, utilizzando il filtro woocommerce_account_menu_items, integri perfettamente le tue voci personalizzate in WooCommerce, infatti:

  • Possibilità di ridefinire i tuoi endpoint personalizzati tramite la pagina delle impostazioni "Account" di WooCommerce.
  • WooCommerce aggiorna automaticamente l'URL del link degli elementi quando, ad esempio, viene modificata la struttura dei permalink.

Esempio di codice:

// Nota la bassa priorità dell'hook, questo dovrebbe dare agli altri plugin il tempo di aggiungere le loro voci...
add_filter( 'woocommerce_account_menu_items', 'add_my_menu_items', 99, 1 );

function add_my_menu_items( $items ) {
    $my_items = array(
    //  endpoint   => etichetta
        '2nd-item' => __( '2° Elemento', 'my_plugin' ),
        '3rd-item' => __( '3° Elemento', 'my_plugin' ),
    );

    $my_items = array_slice( $items, 0, 1, true ) +
        $my_items +
        array_slice( $items, 1, count( $items ), true );

    return $my_items;
}

Nota 1: L'URL del link delle tue voci è definito automaticamente da WooCommerce qui. Per farlo, WooCommerce semplicemente aggiunge l'endpoint dell'elemento definito nel filtro sopra all'URL della pagina "Il mio account". Quindi definisci i tuoi endpoint di conseguenza.

Nota 2: Nella tua domanda, sembra che tu abbia modificato direttamente il template di WooCommerce nel core...
woocommerce/templates/myaccount/navigation.php
Quando devi modificare un template di WooCommerce, il modo corretto per farlo è duplicare il percorso del template relativo alla cartella woocommerce/templates nella cartella woocommerce del tuo tema/plugin. Ad esempio nel nostro caso, dovresti incollare il template in:
child-theme/woocommerce/myaccount/navigation.php.

16 ago 2017 18:04:43
Commenti

Ciao, sto provando questo metodo, inserendo il codice nel file functions.php, ma ottengo i link solo nella navigazione superiore, non anche nel menu laterale, qualche suggerimento?

alexcr alexcr
21 mag 2020 17:20:12

@alexcr Sia la sidebar che l'header sono gestiti dal tuo tema, non dal plugin WC. WC implementa solo template e hook che spetta agli sviluppatori del tema e agli integratori includere o meno.

ClemC ClemC
25 mag 2020 09:36:23
1

Personalizzare l'account WooCommerce e aggiungere nuovi elementi avviene in pochi passaggi,

Primo Passo: Creare i Link:

Dovresti usare il filtro woocommerce_account_menu_items per modificare i menu esistenti o aggiungere nuove voci, ad esempio aggiungo una voce chiamata Lista dei Desideri

add_filter( 'woocommerce_account_menu_items', function($items) {
    $items['wishlist'] = __('Lista dei Desideri', 'textdomain');

    return $items;
}, 99, 1 );

Nota: Ho seguito il modo più semplice, puoi usare array_slice se vuoi posizionare la voce del menu dove preferisci.

P.s: Se vuoi rimuovere o modificare voci esistenti puoi farlo così:

add_filter( 'woocommerce_account_menu_items', function($items) {
    unset($items['downloads']); // Rimuove la voce download
    $items['orders'] = __('I Miei Ordini', 'textdomain'); // Cambia l'etichetta per ordini

    return $items;
}, 99, 1 );

Passo 2: Aggiungere gli endpoint rewrite:

Per ogni voce che aggiungi dovrai creare un endpoint:

add_action( 'init', function() {
    add_rewrite_endpoint( 'wishlist', EP_ROOT | EP_PAGES );
    // Ripeti la riga sopra per altri elementi ...
} );

Ricorda che dopo aver aggiunto nuovi endpoint devi aggiornare le regole di rewrite andando in wp-admin/impostazioni/permalink e cliccando il pulsante aggiorna oppure usando la funzione flush_rewrite_rules()

Passo 3: Visualizzare il contenuto del nuovo elemento

Per mostrare il contenuto dei tuoi nuovi elementi dovresti usare l'azione woocommerce_account_{myEndPoint}_endpoint, nel nostro esempio ho creato un file chiamato wishlist.php nella directory del tema sotto woocommerce/account/ e ne mostro il contenuto così:

add_action( 'woocommerce_account_wishlist_endpoint', function() {
    wc_get_template_part('account/wishlist');
});
18 giu 2020 21:37:01
Commenti

È anche utile utilizzare la funzione register_activation_hook() per registrare un metodo di attivazione che chiama flush_rewrite_rules() in modo da non ripulire ripetutamente le regole al caricamento della pagina e per non dover ricordare di salvare i permalink. In questo modo verrà eseguito solo una volta all'attivazione e funzionerà "senza problemi". Ricorda però di fare add_rewrite_endpoint() prima in modo che venga registrato.

Rick Mac Gillis Rick Mac Gillis
11 mag 2024 01:29:41