Customizarea meniului în temele WordPress folosind un walker

WordPress este o platformă de blogging foarte răspândită. Dacă nu ați știut, este destul de ușor să portezi teme pentru el, iar în cazul în care aveți un blog pe wordpress, cu siguranță v-ați gândit la posibillitatea asta.
Pe sit-ul wordpress  veți găsi o serie de articole destul de explicite pentru cei care vor să facă o temă de wordpress: wordpress theme development sau designing themes for public release .

WordPress 3.0, a adus o serie de funcţii specifice construirii  şi afişării meniurilor dinamice. Astfel, avem în partea de administrare meniul  Appearance → Menus, de unde se pot construi meniuri, iar în fişierele temei putem apela funcţia wp_nav_menu cu parametrii specifici.

Deşi rezultatul funcţiei wp_nav_menu, poate fi customizat în fel şi chip, uneori pentru a obţine anumite efecte şi a menţine structura dinamică meniului este mai bine să apelăm la un walker.

$walker este penultimul parametru al funcției wp_nav menu, și ne permite să specificăm un obiect ce al unei clase care extinde clasa Walker.

Practic, dacă vrem să avem control absolut asupra afișării meniului, cel mai bine ar fi să folosim o funcție specifică, în loc de wp_nav_menu. Folosind un walker, putem extrage un vector (array) cu următoarea structură: array(„text”=>”link”) . Acesta îl putem mai apoi transmite ca parametru funcției noastre care va construi și eventual, afișa meniul.

Clasa de mai jos, este un exemplu de un astfel de walker. Acesta suprascrie o singură metodă a clasei Walker_Nav_Menu, și mai are în plus un membru public, ArrayItems , al cărui scop este de a reține un  vector de elemente de forma array( itemId => array( titlu => url ) ) :

Acum, pentru a putea folosi acest walker în tema de wordpress, clasa trebuie pusă fie într-un fișier php (d.e. theme_menu_walker.php), și inclus în fișierul unde urmează sa fie utilizat cu include sau mai bine pusă în functions.php, fișier care este inclus automat de wordpress odată cu fișierele temei.
După ce a fost inclus, noul walker, poate fi folosit astfel:

În acest fel, formatarea item-ilor rămâne alegerea voastră, fără a mai depinde de parametrii funcției wp_nav_menu.

Dacă vreți să descărcați cele doua fișiere din tutorial click aici.