Hogyan építsünk WordPress navigációt a wp_nav_menu () használatával

Minden modern WordPress témának tartalmaznia kell számos közös elemet a kódon belül. A kézi navigáció fizikai kódolása akkor működik, ha már létrehoztad a tartalmat, de egyáltalán nem túl dinamikus.

A legjobb módszer a saját WP navigációs programozás létrehozása, amelyet a rendszergazda a saját menükbe köti össze.

Ebben a cikkben szeretném végigvenni azokat az alapokat, amelyeket követned kell, amikor saját navigációt hozol létre egy témában. Átnézünk sok egyéni lehetőséget, és hogyan lehet beállítani egy teljesen új menüt a semmiből. Ehhez a cikkhez nem kell semmit létrehoznod, úgyhogy gondolj rá inkább egy útmutatóként a kódolás során.

A bejegyzés angol nyelvű verziója itt érhető el: How to Build WordPress Navigation Using wp_nav_menu()

A navigációs menü alapjai

Régen, a WordPress 3.0 sok fejlesztése előtt a fejlesztők tipikusan a wp_page_menu () -t használták a témafejlődésben. Ezzel az oldalak teljes listáját, a kezdőlapra mutató linket outputolják, és vannak olyan paraméterei, amelyek a kódban szerepelnek. Ezt továbbra is használhatod az oldalsávban vagy láblécén, ha van értelme.

De van egy sokkal népszerűbb navigációs módszer, amely a WordPress beépített menürendszerén keresztül történik. Az adminisztrátorok annyi egyéni menüt hozhatnak létre, amennyit szeretnének, dragging & dropping linkek a manuális hierarchia és struktúra létrehozása érdekében. Közvetlenül kezelheted a linkeket a bejegyzésekhez, oldalakhoz, kategóriákhoz, címkékhez, gyakorlatilag bármihez a webhelyeden. Az első lépés az, hogy egy kódot írj a functions.php fájlba, amely létrehozza a navigációs menüt. Ez történhet a register_nav_menu () vagy a register_nav_menus () paranccsal, ha több elem van. Ezek a menük csak egy $location nevű azonosítót igényelnek egy kis leíró karakterlánccal.

1
register_nav_menu( 'primary', 'Primary Menu' );

A $location több mint egy slug ID, amelyet a téma menüjének azonosításához használnak. Használhatod ezt az eszközt bármely PHP téma fájlban. Ezenkívül vedd figyelembe, hogy a navigációs menük automatikusan iniciálják a téma támogatását, így nem kell add_theme_support () menüt használni.

Pozíciók a témádban

A functions.php menüpontjainak beállításával át kell menni a többi témafájlra. Kezdjük egy olyan tipikus helyszínen, mint a header.php, ahol hozzáadhatunk egy nagyon egyszerű kódot. Ez a minta át van másolva a wp_nav_menu () kódexből és tartalmazza az összes opcionális paramétert.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
$defaults = array(
	'theme_location'  => '',
	'menu'            => '',
	'container'       => 'div',
	'container_class' => '',
	'container_id'    => '',
	'menu_class'      => 'menu',
	'menu_id'         => '',
	'echo'            => true,
	'fallback_cb'     => 'wp_page_menu',
	'before'          => '',
	'after'           => '',
	'link_before'     => '',
	'link_after'      => '',
	'items_wrap'      => '<ul id="%1$s" class="%2$s">%3$s</ul>',
	'depth'           => 0,
	'walker'          => ''
);
 
wp_nav_menu( $defaults );

Ezeket a lehetőségeket a következő részben fogjuk megtárgyalni. Kezdjük az első kettővel. Ne feledd, hogy ezek mind opcionálisak, mert a fent látható értékek alapértelmezettnek minősülnek, ha nem írják felül. A theme_location-nak meg kell egyeznie a menüben regisztrált helycsatornával. Ez az egyetlen olyan érték, amelyet meg kell változtatni annak biztosítása érdekében, hogy megfelelően illeszkedjen.

Paraméterek beállítása

A többi beállítás elsősorban a testreszabásról szól, ezért figyelmen kívül hagyhatod. De tekintsük meg a többit, hogy jobban megismerhessük a lehetőségeket.
A container, a container_class és a container_id a menü megtervezésénél előnyös. A külső container elem az UL körül van, így akár HTML5 <nav> is lehet, ha tetszik a szemantika.

A menu_class és a menu_id a saját rendezetlen listára kerül. Minden menü a .menu osztályt kapja, szóval érdemes megváltoztatni, ha többször is használnád. Az echo param ezt a funkciót adja meg a HTML menü megjelenítéséhez, különben visszaadja az értéket egy függvényre vagy PHP változóra. Amikor a wp_nav_menu () nem tud futni valamilyen okból, akkor a wp_page_menu ()  automatikusan visszaesik, amint azt korábban már említettem.

A következő két előtte és utána param minden HTML-t közvetlenül a horgony linkek előtt, vagy csak a bezárás után fognak outputolni. A link_before és a link_after a HTML linket a horgony linkek közé illeszti, közvetlenül a szöveg előtt és után. Ne feledkezz meg ezekről a lehetőségekről, és győződj meg róla, hogy nem keverednek össze! Ha kétségeid vannak, ellenőrizd a támogatási kódot.

Most, ha nem szeretnél rendezetlen listát használni, megváltoztathatod belülről az items_wrap elemet. A sprintf () típusú szintaxist használva ugyanazon funkciójú dinamikus paraméterek értékeinek helyébe lép. % 1 $ s hivatkozik a menu_idre,% 2 $ s hivatkozik a menu_classra, és % 3 $ s kapcsolódik a kimenő listaelemekhez. Mivel az <li> elemek megváltoztatása sok extra munkát igényel, általában csak hagyjuk ezt egyedül.

Végül a mélységi paraméter megmondja a menünek, hogy milyen mélyre kell menni a hierarchia felé. Ha a fejléc navigáció csak egyszintű legördülő menü, akkor csak egy szint mélységre van szükségünk. Vagy lehet egy 2-tier flyout menü, amely 2 szintet tud használni. A -1 egy speciális érték, amely a menü összes linkjét megjeleníti, ugyanakkor ugyanazt a megjelenítési szintet kondenzálja.

Most a $ walker elem egy speciális paraméter, amely testreszabhatja, hogy a WordPress hogyan adja ki a tartalmat egy fa hierarchiában. Egy új osztályobjektumot vár el, amely testreszabott módszereket tartalmaz az elemek kimenetéhez. Ez egy meglehetősen fejlett téma, de erről többet olvashatsz a Walker osztály referencia útmutatójában.

Menük létrehozása a WP Adminból

Ez az utolsó bit a rendszergazdáknak és webmestereknek jobb menüket biztosít a menük megértéséhez. Miután bejelentkeztél az admin panelbe, menj a "Megjelenés" elemre, majd kattints a menük linkre.

Innentől át kell rendezned a linkeket, a bal harmonikán a jobb oldali szakaszba szervezve.  Adhatsz a menünek egy nevet, amelyre hivatkozni lehet a PHP-ban - de vedd figyelembe, hogy a felső részen látható lesz egy legördülő menü. Regisztráld a navigációt és add meg a témakört ebben a legördülőben. Így tudják a webmesterek saját menüiket megszervezni anélkül, hogy PHP-t kellene kódolniuk.

A bal oldalon választhatsz az oldalak, hozzászólások, linkek, kategóriák és címkék között. Ha a jobb felső sarokban lévő kis képernyőre kattintasz a "Képernyőbeállítások" mellett, elrejthetsz a képernyők közül néhányat. Az egyes linkek célmegadásához (például target = "_ blank") vagy akár egyedi CSS-osztályok létrehozásához speciális menüopciók is találhatók.

Minden egyes kategória link eltérő osztályt használhat az egyedi színekhez a kiválasztáskor. Alapértelmezés szerint minden linknek meg fogsz adni egy rövid szöveget és rövid leírást, amelyet gyakran csak a weboldal rendszergazdája használ. A hivatkozások is lehetnek cím attribútumok és egyedi XFN értékek.

Minél többet fogod gyakorolni a menü rendszer használatát, annál világosabb lesz. Mint fejlesztő, aki évek óta használ WordPresst, úgy találom, nagyon praktikus. Azok az újonnan érkezők, akik csak a WordPress alapjait tanulják, még mindig gyorsan fel tudnak zárkózni bármilyen különösebb nehézség nélkül.

Lezárás

Remélem, ez az áttekintés némileg segíteni fog a fejlesztőknek könnyebben beleugrani a témába. Nyilvánvaló, hogy vannak más fontos szempontok is egy téma kódolásánál. De a navigáció annyira elengedhetetlen, mégis kissé zavaró, főleg ha eddig még soha nem építettél semmi ilyesmit. Próbáld ki ezeket a minta PHP kódokat, és nézd meg, mi válhat hasznodra.



Ingrid Almási

Csodálatos dolognak tartom az írást, mellyel új világokat, különleges embereket teremthetünk. Akikért az olvasó izgulhat, szeretheti vagy gyűlölheti őket. Vagyis annak a fantáziáját szereti, aki megalkotta a művet. Ha csak egy írásom elgondolkodtat, elszomorít vagy megnevettet valakit, már megérte tollat ragadnom.