Eliminați link-ul de pe sine din meniul wordpress

Link-uri sunt structuri conceptuale folosind elemente: o, zonă și link-ul, care demonstrează relația dintre două resurse, dintre care unul este un curent.

Nu pot spune dacă are sens să se concentreze pe această formulare, dar situația este de așa natură încât TOR îndeplinește în mod regulat obligația de a exclude o legătură „pe sine“ pentru comenzile de navigare.

Cum de a elimina un link către pagina curentă în meniul WordPress

standard generație de meniu funcția wp_nav_menu WordPress (), cerința menționată mai sus nu este îndeplinită. Am văzut câteva soluții la această problemă, dar nu-mi place, din cauza faptului că ei folosesc destul de o clasă de voluminos Walker_Nav_Menu, expresii regulate și valorile testelor REQUEST_URI. Rezultatul nu este soluția cea mai elegantă și flexibilă (în principiu, și nu cele mai fiabile).

Am oferi o soluție sub forma unei funcții înveliș pentru wp_nav_menu (), al cărui esență se bazează pe interacțiunea cu meniul ca document XML. Aceeași abordare am folosit la punerea în aplicare a funcției care afișează submeniul separat din meniul principal.

Funcția ia un standard pentru wp_nav_menu () o serie de argumente cu două chei suplimentare:

  • replace_a_by - numele tag-ul, care va fi înlocuit cu un link etichetă. În mod implicit, durata;
  • XPath - selector de curent de selecție element de meniu în format XPath. Implicit // li [conține (@class, "curent-meniu-element") sau conține (@class, "current_page_item")].

Cum să utilizați?

Pur și simplu înlocuiți wp_nav_menu apel () pe wp_nav_menu_extended (). De exemplu:

Acesta funcționează corect cu orice nivel de imbricare.

UPD (21.10.14)
Fixed un bug care a condus la faptul că, după îndepărtarea de link-uri, meniu dovedit după lista de elemente de meniu în cazul în care există un al doilea nivel.