Cum să modifici meniul de navigare al paginii "Contul meu" în WooCommerce

26 iul. 2017, 09:39:08
Vizualizări: 77.1K
Voturi: 13

Vreau să modific meniul de navigare din partea stângă a paginii "Contul meu" din WooCommerce.

Pentru asta, am făcut modificări în woocommerce/templates/myaccount/navigation.php. Problemele cu această abordare sunt:

  • Pot adăuga elementele noi doar pe prima sau ultima poziție în meniu. În schimb, aș avea nevoie de ele pe poziția a 2-a și a 3-a....
  • Dacă WC este actualizat, acestea s-ar putea schimba...

Care este cea mai bună modalitate de a personaliza meniul de navigare "Contul meu" din WooCommerce după preferințele mele?

exemplu meniu de navigare WooCommerce Contul meu

1
Comentarii

Răspunsul mai detaliat aici: https://github.com/woocommerce/woocommerce/wiki/Customising-account-page-tabs

Zhi V Zhi V
28 mai 2018 17:04:21
Toate răspunsurile la întrebare 2
2
28

Pentru asta, nu este nevoie să modifici fișierul woocommerce/templates/myaccount/navigation.php.

Cea mai bună metodă de a personaliza elementele din meniul de navigare "Contul meu" este să folosești:

Prin utilizarea filtrului woocommerce_account_menu_items, integrezi perfect elementele tale în WooCommerce, având avantajele:

  • Posibilitatea de a redefini endpoint-urile personalizate prin pagina de setări "Cont" din WooCommerce.
  • WooCommerce actualizează automat URL-urile linkurilor la modificări ale structurii de permalinkuri.

Exemplu de cod:

// Prioritatea scăzută a hook-ului asigură că alte plugin-uri pot adăuga propriile elemente...
add_filter( 'woocommerce_account_menu_items', 'add_my_menu_items', 99, 1 );

function add_my_menu_items( $items ) {
    $my_items = array(
    //  endpoint   => etichetă
        '2nd-item' => __( 'Al 2-lea Element', 'my_plugin' ),
        '3rd-item' => __( 'Al 3-lea Element', 'my_plugin' ),
    );

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

    return $my_items;
}

Notă 1: WooCommerce generează automat URL-urile elementelor conform acestui mecanism, adăugând endpoint-ul definit în filtrul de mai sus la URL-ul paginii "Contul meu". Definiți endpoint-urile în consecință.

Notă 2: Se pare că ai modificat direct șablonul WooCommerce în nucleu...
woocommerce/templates/myaccount/navigation.php
Când este necesar să modifici un șablon WooCommerce, copiază calea relativă la folderul woocommerce/templates în tema/plugin-ul tău. De exemplu:
tema-copil/woocommerce/myaccount/navigation.php.

16 aug. 2017 18:04:43
Comentarii

Salut, încerc această metodă, adăugând codul în functions.php, dar primesc link-uri doar în navigația de sus, nu și în meniul lateral, ai vreo sugestie?

alexcr alexcr
21 mai 2020 17:20:12

@alexcr Atât bara laterală cât și antetul sunt gestionate de tema ta, nu de pluginul WC. WC doar implementează șabloane și hook-uri pe care dezvoltatorii de teme și integratorii trebuie să le includă sau nu.

ClemC ClemC
25 mai 2020 09:36:23
1

Personalizarea contului WooCommerce și adăugarea de elemente noi se face în câteva pași,

Primul pas: Crearea link-urilor:

Ar trebui să folosești filtrul woocommerce_account_menu_items pentru a modifica elementele existente sau pentru a adăuga elemente noi în meniu, de exemplu am adăugat un element numit Listă de dorințe

add_filter( 'woocommerce_account_menu_items', function($items) {
    $items['wishlist'] = __('Listă de dorințe', 'textdomain');

    return $items;
}, 99, 1 );

Notă: Am ales cea mai simplă metodă, poți folosi array_slice dacă dorești să plasezi elementul în meniu în poziția dorită.

P.s: Dacă dorești să elimini sau să modifici elementele existente, poți face astfel:

add_filter( 'woocommerce_account_menu_items', function($items) {
    unset($items['downloads']); // Elimină elementul pentru descărcări
    $items['orders'] = __('Comenzile mele', 'textdomain'); // Schimbă eticheta pentru comenzi

    return $items;
}, 99, 1 );

Pasul 2: Adaugă endpoint-uri rewrite:

Pentru fiecare element pe care îl adaugi, va trebui să adaugi un endpoint:

add_action( 'init', function() {
    add_rewrite_endpoint( 'wishlist', EP_ROOT | EP_PAGES );
    // Repetă linia de mai sus pentru mai multe elemente ...
} );

Ține minte că după ce adaugi endpoint-uri noi, trebuie să reîncarci regulile de rewrite fie mergând la wp-admin/settings/permalinks și făcând click pe butonul actualizează, fie folosind funcția flush_rewrite_rules().

Pasul 3: Afișează conținutul pentru noul element

Pentru a afișa conținutul pentru elementele nou adăugate, ar trebui să folosești acțiunea woocommerce_account_{myEndPoint}_endpoint, pentru exemplul nostru am creat un fișier numit wishlist.php în directorul temei mele, sub woocommerce/myaccount/ și îi afișez conținutul astfel:

add_action( 'woocommerce_account_wishlist_endpoint', function() {
    wc_get_template_part('myaccount/wishlist');
});
18 iun. 2020 21:37:01
Comentarii

De asemenea, este util să folosești funcția register_activation_hook() pentru a înregistra o metodă de activare care să apeleze flush_rewrite_rules(), astfel încât să nu ștergi în mod repetat regulile la încărcarea paginii și să nu fie nevoie să-ți amintești să salvezi permalinkurile. În acest fel, va rula doar o singură dată la activare și va "funcționa automat". Nu uita totuși să faci add_rewrite_endpoint() înainte, pentru a te asigura că este înregistrat.

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