Tutoriale WordPress de încredere, atunci când aveți cea mai mare nevoie.
Ghidul începătorului pentru WordPress
Cupa WPB
25 de milioane+
Site-uri web care folosesc plugin-urile noastre
16+
Ani de experiență WordPress
3000+
Tutoriale WordPress de la experți

Cum să adăugați descrieri de meniu în temele dvs. WordPress

Sistemul de meniuri WordPress are o funcționalitate încorporată prin care puteți adăuga descrieri la elementele de meniu. Cu toate acestea, această funcționalitate este ascunsă implicit. Chiar și atunci când este activată, afișarea lor nu este suportată fără a adăuga cod. Majoritatea temelor nu sunt concepute având în vedere descrierile elementelor de meniu. În acest articol vă vom arăta cum să activați descrierile meniurilor în WordPress și cum să adăugați descrieri de meniu în temele dumneavoastră WordPress.

Cum să adăugați descrieri de meniu în temele WordPress

Notă: Acest tutorial necesită să aveți o înțelegere corectă a HTML, CSS și a dezvoltării temelor WordPress.

Când și de ce ai dori să adaugi descrieri de meniuri?

Unii utilizatori cred că adăugarea descrierii meniului ajută la SEO. Cu toate acestea, credem că principalul motiv pentru care ați dori să le utilizați este să oferiți o experiență mai bună utilizatorului pe site-ul dvs.

Descrierile pot fi folosite pentru a spune vizitatorilor ce vor găsi dacă dau clic pe un element de meniu. O descriere intrigantă va atrage mai mulți utilizatori să dea clic pe meniuri.

Descrieri de meniu

Pasul 1: Activați Descrierile Meniului

Accesați Aspect » Meniuri. Faceți clic pe butonul Opțiuni ecran din colțul din dreapta sus al paginii. Bifați caseta Descrieri.

Activarea descrierilor meniului în WordPress

Acest lucru va activa câmpul de descrieri în elementele meniului tău. Ca acesta:

Câmpul de descriere adăugat la elementele de meniu

Acum puteți adăuga descrieri la elementele meniului în meniul dvs. WordPress. Cu toate acestea, aceste descrieri nu vor apărea încă în temele dvs. Pentru a afișa descrierile meniului, va trebui să adăugăm niște cod.

Pasul 2: Adaugă clasa walker:

Clasa Walker extinde clasa existentă în WordPress. Practic, adaugă doar o linie de cod pentru a afișa descrierile elementelor de meniu. Adăugați acest cod în fișierul functions.php al temei dvs.

class Menu_With_Description extends Walker_Nav_Menu {
	function start_el(&$output, $item, $depth, $args) {
		global $wp_query;
		$indent = ( $depth ) ? str_repeat( "\t", $depth ) : '';
		
		$class_names = $value = '';

		$classes = empty( $item->classes ) ? array() : (array) $item->classes;

		$class_names = join( ' ', apply_filters( 'nav_menu_css_class', array_filter( $classes ), $item ) );
		$class_names = ' class="' . esc_attr( $class_names ) . '"';

		$output .= $indent . '<li id="menu-item-'. $item->ID . '"' . $value . $class_names .'>';

		$attributes = ! empty( $item->attr_title ) ? ' title="' . esc_attr( $item->attr_title ) .'"' : '';
		$attributes .= ! empty( $item->target ) ? ' target="' . esc_attr( $item->target ) .'"' : '';
		$attributes .= ! empty( $item->xfn ) ? ' rel="' . esc_attr( $item->xfn ) .'"' : '';
		$attributes .= ! empty( $item->url ) ? ' href="' . esc_attr( $item->url ) .'"' : '';

		$item_output = $args->before;
		$item_output .= '<a'. $attributes .'>';
		$item_output .= $args->link_before . apply_filters( 'the_title', $item->title, $item->ID ) . $args->link_after;
		$item_output .= '<br /><span class="sub">' . $item->description . '</span>';
		$item_output .= '</a>';
		$item_output .= $args->after;

		$output .= apply_filters( 'walker_nav_menu_start_el', $item_output, $item, $depth, $args );
	}
}

Pasul 3. Activarea Walker în wp_nav_menu

Teme WordPress folosesc funcția wp_nav_menu() pentru a afișa meniuri. De asemenea, am publicat un tutorial pentru începători despre cum să adăugați meniuri de navigare personalizate în temele WordPress. Majoritatea temelor WordPress adaugă meniuri în fișierul de șablon header.php. Cu toate acestea, este posibil ca tema dvs. să fi folosit un alt fișier de șablon pentru a afișa meniuri.

Ceea ce trebuie să facem acum este să găsim funcția wp_nav_menu() în tema ta (cel mai probabil în header.php) și să o modificăm astfel.

<?php $walker = new Menu_With_Description; ?>

<?php wp_nav_menu( array( 'theme_location' => 'primary', 'menu_class' => 'nav-menu', 'walker' => $walker ) ); ?>

În prima linie setăm $walker să folosească clasa walker definită anterior în functions.php. În a doua linie de cod, singurul argument suplimentar pe care trebuie să-l adăugăm argumentelor noastre existente wp_nav_menu este 'walker' => $walker.

Pasul 4. Stilul descrierilor

Clasa walker pe care am adăugat-o anterior afișează descrierile elementelor la această linie de cod:

$item_output .= '<br /><span class="sub">' . $item->description . '</span>';

Codul de mai sus adaugă o linie nouă la elementul de meniu prin adăugarea unei etichete
și apoi înfășoară descrierile dumneavoastră într-un span cu clasa sub. Astfel:

<li id="menu-item-99" class="menu-item menu-item-type-post_type menu-item-object-page"><a href="http://www.example.com/about/">About<br /><span class="sub">Who are we?</span></a></li>

Pentru a schimba modul în care apar descrierile dvs. pe site-ul dvs., puteți adăuga CSS în foaia de stil a temei dvs. Am testat acest lucru pe Twenty Twelve și am folosit acest css.

.menu-item {
border-left: 1px solid #ccc;
}

span.sub { 
font-style:italic;
font-size:small;
}

Sperăm că veți găsi acest articol util și vă va ajuta să creați meniuri cu aspect cool cu descrieri de meniu în tema dvs. Întrebări? Lăsați-le în comentariile de mai jos.

Resurse suplimentare

Cum să stilizezi meniurile de navigare WordPress

Cum să adăugați elemente personalizate la meniuri WordPress specifice

Meniuri cu clasa de descriere de la Bill Erickson

Dezvăluire: Conținutul nostru este susținut de cititori. Acest lucru înseamnă că dacă faceți clic pe unele dintre linkurile noastre, este posibil să câștigăm un comision. Vedeți cum este finanțat WPBeginner, de ce contează și cum ne puteți susține. Iată procesul nostru editorial.

Cel mai bun instrumentar WordPress

Obține acces GRATUIT la instrumentarul nostru - o colecție de produse și resurse legate de WordPress pe care fiecare profesionist ar trebui să le aibă!

Interacțiuni cu cititorii

51 CommentsLeave a Reply

  1. În PHP 8.0 și versiunile superioare, acest lucru va genera o eroare critică.

    Trebuie să găsești această linie:
    function start_el( $output, $item, $depth, $args ) {

    Schimbarea acelei linii cu următoarea ar trebui să facă eroarea să dispară:
    function start_el( &$output, $item, $depth = 0, $args = array(), $id = 0 ) {

  2. Pentru a adăuga descrieri de meniu în temele mele WordPress, am urmat pașii 1 și 2 ai acestui blog, dar nu am putut urma pasul 3 pentru a merge mai departe și a efectua schimbarea totală.

    • Dacă nu puteți găsi funcția în tema dvs., vă recomandăm să contactați suportul temei dvs. specifice și aceștia ar trebui să vă poată ajuta.

      Admin

  3. Salut,
    Cum să dezactivez descrierea categoriei de produse în max mega menu?
    Am mers deja la Mega Menu > Setări generale și am setat Descrierile elementelor de meniu la dezactivat, dar problema persistă.

    • Ar trebui să contactați suportul plugin-ului și aceștia ar putea să vă ajute cu setarea care nu funcționează corect

      Admin

  4. Salut.. Vă rog să mă ajuta..
    Cum să adaug o categorie de titlu, fără a folosi descrierea categoriei de titlu?

  5. Sfat grozav, dar în descrierea meniului nu suportă etichete html. Știe cineva despre asta?

    Mulțumesc

  6. Salut băieți,

    Aveți idei cum să permit etichete html în descriere?
    remove_filter(‘nav_menu_description’, ‘strip_tags’);
    aceasta nu funcționează pentru mine.

    • @Iryna: Poți să-ți postezi codul undeva, de ex. pastebin.com.
      Locul unde apelezi remove_filter() va determina dacă funcționează – trebuie apelat după apelul add_filter().
      Apelarea lui chiar înainte de apelul wp_nav_menu() ar putea funcționa.

  7. Poate fi deja acolo gata de conectat? Cum va funcționa acest hack cu tema „Twenty TwelveVersiune: 1.5”
    ? Și la fel ca și cu pluginul wpml?

  8. Salut, am adăugat clasa walker în functions.php, dar nu găsesc wp_nav_menu în tema Genesis. Ce îmi lipsește? Nu am idee ce să fac în continuare?!?!

  9. Explici foarte bine – detaliat și clar. Descrierile elementelor de meniu și cele de 1 minut sunt în regulă. Mulțumesc!

  10. Vă mulțumesc foarte mult pentru acest tutorial. Mi-a fost recomandat și a funcționat perfect pentru a face modificările pe care doream să le fac. Cu toate acestea, făcând aceste modificări, mi-am pierdut meniurile derulante cu sub-elemente. Aveți idee ce a afectat asta în modificarea codului?

    Vă mulțumesc pentru timpul acordat și pentru tutorial

    • Pare a fi o problemă CSS, ne pare rău că nu am putut fi mai specifici. Încearcă să folosești instrumentele pentru dezvoltatori ale Google Chrome pentru a o depana.

      Admin

  11. Am implementat descrierile meniului și a funcționat grozav. Acum clientul meu cere o linie nouă în interiorul uneia dintre descrieri. Am încercat să pun un retur de car și să inserez o etichetă
    în câmpul de descriere prin administrator. Nu apare pe front-end. WP elimină aceste modificări. Există o modalitate de a remedia acest lucru?

  12. Tutorial grozav, băieți, doar vreau să știu cum să implementez asta pe un meniu personalizat afișat folosind widget-ul Meniu Personalizat?

  13. Mulțumesc! Lucrez la WordPress de ani de zile și nici măcar nu am auzit de asta înainte. Căutam să elimin descrierile, deoarece erau foarte redundante pe site-ul la care lucrez. Am căutat peste tot de unde veneau.

    Oh, bucurie!

  14. funcționează!

    dar pentru php 5.4 va trebui să potriviți argumentele wp walker pentru funcția start_el:

    function start_el( &$output, $object, $depth = 0, $args = array(), $current_object_id = 0 )

    și înlocuiți $item cu $object.

  15. Perfect. Acesta a fost exact ceea ce aveam nevoie pentru a finaliza un site. Am avut câteva probleme cu CSS, dar în cele din urmă am rezolvat-o și am făcut-o să funcționeze. Mulțumiri pentru articolele grozave.

  16. Acest lucru a funcționat perfect pentru mine. Funcția de clasă este perfectă, de asemenea. Mulțumesc mult!

  17. A trebuit să creez același lucru și am fost complet pierdut.

    Planificam să fac niște lucruri stupide pentru a rezolva această problemă.

    Slavă Domnului că am găsit acest post și mi-am economisit timp și stres!

    Pur și simplu iubesc acest site, am aflat atâtea lucruri.

    Vă mulțumesc mult pentru că ați arătat cele mai simple lucruri aici.

    • Eticheta span apare și pe sub-meniuri.

      nu se afișează acolo, dar ocupă mult spațiu, ceea ce îl face să pară prea ciudat.

      există vreo soluție pentru același lucru??

  18. Acesta este într-adevăr un tutorial grozav și mă întrebam dacă ar funcționa pe Thesis 1.8.5? Dacă nu, ar fi grozav dacă ați putea oferi unul. Cu siguranță vă voi ajuta să-l publicați. Bravo!

  19. Am urmat tutorialul dvs. și am adăugat descrieri la meniul meu. Mulțumesc! Totuși, când sunt în modul mobil, meniul se transformă într-un meniu derulant, iar titlul și descrierea meniului sunt conectate. De exemplu, dacă elementul meu de meniu este „despre” și descrierea „mai multe despre mine”, versiunea mobilă afișează „despremai multe despre mine”. Există o modalitate de a remedia acest lucru?

    • Am avut aceeași problemă. Iată ce am făcut.

      Am schimbat asta:
      $description = ! empty( $item->description ) ? ‘<span>’.esc_attr( $item->description ).'</span>’ : ”;

      La aceasta:
      $description = ! empty( $item->description ) ? ‘<br /><span>’.esc_attr( $item->description ).'</span>’ : ”;

      Nu sunt sigur dacă este cea mai bună soluție, dar a funcționat pentru mine.

      • Mulțumesc băieți, am întâlnit ceea ce SVET și DAVID au făcut cu meniul mobil.
        Codul pare să fi schimbat modificarea mea a fost pur și simplu adăugarea într-un span cu separatorul dash și în interogarea mea desktop pur și simplu l-am suprima, deoarece nu era necesar acolo.

        $item_output .= ‘ – ‘;

        În setul meu de interogare Desktop Only, setați span la display none;
        @media only screen and (min-width: 740px) {
        header #submenu li span.dash { display:none; }

        Sper că ajută, mi-a rezolvat problema frumos.

  20. Postare grozavă – foarte clară, exact ce aveam nevoie și a funcționat perfect. Mulțumesc!

  21. Mulțumesc pentru tutorialul grozav. Am făcut pașii majori bine, așa cum puteți vedea de pe
    http://ueab.ac.ke/demo/index

    Mă blocasem la stilizare – cum reduc spațiul dintre eticheta meniului principal și descriere? Ajutorul dumneavoastră este foarte apreciat.

  22. Postare grozavă. Am încercat să aprofundez acest subiect înainte, dar instrucțiunile anterioare pe care le-am găsit nu au fost atât de ușor de urmat. Am reușit să introduc codul functions.php, să înțeleg cum să schimb clasa walker în fișierul meu header (diferit pentru tema pe care o folosesc, dar simplu) și să pun lucrurile în mișcare în aproximativ 15 minute de la început până la sfârșit.

    Un aspect pe care ați putea dori să-l adăugați este cum să includeți marginea dreaptă la ultimul element de meniu folosind proprietatea :last-child.


    .menu-item:last-child { border-right: 1px solid #ccc; }

  23. În loc să extindem Walker_Nav_Menu ar fi frumos (și mai ușor) dacă s-ar oferi un filtru, de ex.
    Dacă codul de bază ar avea:
    $item_output .= apply_filters( ‘walker_nav_menu_description’, $item->description);

    Atunci funcția de filtrare personalizată ar avea doar:
    return ” . $description . ”;

Lasă un răspuns

Vă mulțumim că ați ales să lăsați un comentariu. Vă rugăm să rețineți că toate comentariile sunt moderate conform politicii noastre de comentarii, iar adresa dvs. de e-mail NU va fi publicată. Vă rugăm să NU folosiți cuvinte cheie în câmpul nume. Să avem o conversație personală și semnificativă.